From 36ccf74ab910a81f9e83466850e149f4c9a9d0eb Mon Sep 17 00:00:00 2001 From: Jay Yu Date: Wed, 9 Sep 2026 23:16:05 -0400 Subject: [PATCH 1/6] fix: hold runtime image publication - Prevent identity migration merges from publishing before phase 3 validation --- .github/workflows/runtime-image.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/runtime-image.yml b/.github/workflows/runtime-image.yml index 1e76b4d66..31f2b6021 100644 --- a/.github/workflows/runtime-image.yml +++ b/.github/workflows/runtime-image.yml @@ -32,6 +32,8 @@ concurrency: jobs: build: + # Phase 1 identity migration hold. Phase 3 validates and re-enables publication. + if: ${{ false }} runs-on: ubuntu-latest permissions: contents: read From 76eef7af077298d1c7ab7a6b749e3fd2cc455c6c Mon Sep 17 00:00:00 2001 From: Jay Yu Date: Wed, 9 Sep 2026 23:25:44 -0400 Subject: [PATCH 2/6] fix(coding-agent): migrate package identities - Move the workspace graph to the confirmed DiffexAI scope and short CLI name - Keep external dependencies unchanged while regenerating install metadata - Align imports, examples, resolution, and release configuration before publication --- .diffex/extensions/import-repro.ts | 2 +- .diffex/extensions/prompt-url-widget.ts | 4 +- .diffex/extensions/redraws.ts | 4 +- .diffex/prompts/cl.md | 4 +- RELEASING.md | 6 +- docs/cloud-runtime.md | 8 +- package-lock.json | 108 ++++++++-------- package.json | 2 +- packages/agent/README.md | 20 +-- packages/agent/docs/harness-v2.md | 2 +- packages/agent/docs/telemetry-schema.md | 2 +- packages/agent/package.json | 6 +- .../agent/scripts/generate-telemetry-docs.ts | 4 +- packages/agent/src/agent-loop.ts | 4 +- packages/agent/src/agent.ts | 4 +- packages/agent/src/harness/agent-harness.ts | 2 +- .../compaction/branch-summarization.ts | 2 +- .../src/harness/compaction/compaction.ts | 2 +- .../agent/src/harness/compaction/utils.ts | 2 +- packages/agent/src/harness/messages.ts | 2 +- packages/agent/src/harness/reducer.ts | 2 +- .../agent/src/harness/session/jsonl/repo.ts | 2 +- packages/agent/src/harness/session/memory.ts | 2 +- packages/agent/src/harness/session/session.ts | 2 +- packages/agent/src/harness/session/types.ts | 2 +- packages/agent/src/harness/telemetry.ts | 4 +- packages/agent/src/harness/tools/read.ts | 2 +- packages/agent/src/harness/types.ts | 2 +- packages/agent/src/index.ts | 6 +- packages/agent/src/proxy.ts | 2 +- packages/agent/src/types.ts | 6 +- packages/agent/test/agent-loop.test.ts | 2 +- packages/agent/test/agent.test.ts | 7 +- packages/agent/test/e2e.test.ts | 2 +- .../harness/agent-harness-scaffold.test.ts | 4 +- .../test/harness/branch-summarization.test.ts | 2 +- .../agent/test/harness/compaction.test.ts | 2 +- packages/agent/test/harness/reducer.test.ts | 2 +- .../test/harness/session/context.test.ts | 4 +- .../harness/session/jsonl-storage.test.ts | 2 +- packages/agent/test/harness/telemetry.test.ts | 6 +- packages/agent/test/utils/calculate.ts | 2 +- packages/agent/tsconfig.build.json | 6 +- packages/agent/vitest.config.ts | 8 +- packages/agent/vitest.harness.config.ts | 8 +- packages/ai/README.md | 106 ++++++++-------- packages/ai/package.json | 4 +- packages/ai/src/cli.ts | 2 +- packages/ai/src/compat.ts | 10 +- packages/ai/src/index.ts | 6 +- packages/ai/src/legacy-api-aliases.ts | 32 ++--- packages/ai/src/types.ts | 2 +- packages/ai/test/github-copilot-oauth.test.ts | 6 +- packages/ai/test/telemetry-options.test.ts | 2 +- packages/ai/vitest.config.ts | 2 +- packages/client/README.md | 18 +-- packages/client/package.json | 6 +- packages/client/src/client.ts | 2 +- packages/client/src/cloud.ts | 2 +- packages/client/src/connection.ts | 2 +- packages/client/src/errors.ts | 2 +- packages/client/src/session-handle.ts | 2 +- packages/client/src/state.ts | 2 +- packages/client/src/types.ts | 2 +- packages/client/src/unix.ts | 2 +- packages/client/src/websocket.ts | 2 +- packages/client/test/connection.test.ts | 2 +- packages/client/test/disposal.test.ts | 2 +- packages/client/test/support.ts | 2 +- packages/client/test/unix.test.ts | 2 +- packages/client/tsconfig.build.json | 2 +- packages/client/tsconfig.test.json | 2 +- packages/client/vitest.config.ts | 2 +- packages/coding-agent-server/README.md | 4 +- packages/coding-agent-server/package.json | 10 +- packages/coding-agent-server/src/cli.ts | 4 +- packages/coding-agent-server/src/service.ts | 6 +- .../test/websocket-flow.test.ts | 12 +- .../coding-agent-server/tsconfig.build.json | 8 +- packages/coding-agent-server/vitest.config.ts | 14 +- packages/coding-agent/README.md | 12 +- packages/coding-agent/docs/compaction.md | 4 +- .../coding-agent/docs/containerization.md | 2 +- packages/coding-agent/docs/custom-provider.md | 10 +- packages/coding-agent/docs/extensions.md | 66 +++++----- packages/coding-agent/docs/index.md | 6 +- packages/coding-agent/docs/packages.md | 2 +- packages/coding-agent/docs/quickstart.md | 10 +- packages/coding-agent/docs/rpc.md | 2 +- packages/coding-agent/docs/sdk.md | 58 ++++----- packages/coding-agent/docs/session-format.md | 2 +- packages/coding-agent/docs/termux.md | 2 +- packages/coding-agent/docs/tui.md | 40 +++--- .../examples/extensions/README.md | 4 +- .../extensions/auto-commit-on-exit.ts | 2 +- .../examples/extensions/bash-spawn-hook.ts | 4 +- .../examples/extensions/bookmark.ts | 2 +- .../extensions/border-status-editor.ts | 11 +- .../extensions/built-in-tool-renderer.ts | 11 +- .../examples/extensions/claude-rules.ts | 2 +- .../examples/extensions/commands.ts | 2 +- .../extensions/confirm-destructive.ts | 2 +- .../examples/extensions/custom-compaction.ts | 6 +- .../examples/extensions/custom-footer.ts | 6 +- .../examples/extensions/custom-header.ts | 4 +- .../custom-provider-anthropic/index.ts | 4 +- .../custom-provider-gitlab-duo/index.ts | 4 +- .../custom-provider-gitlab-duo/test.ts | 8 +- .../examples/extensions/dirty-repo-guard.ts | 2 +- .../extensions/doom-overlay/doom-component.ts | 4 +- .../extensions/doom-overlay/doom-keys.ts | 2 +- .../examples/extensions/doom-overlay/index.ts | 2 +- .../extensions/dynamic-resources/dynamic.json | 2 +- .../extensions/dynamic-resources/index.ts | 2 +- .../examples/extensions/dynamic-tools.ts | 2 +- .../examples/extensions/entry-renderer.ts | 4 +- .../examples/extensions/event-bus.ts | 2 +- .../examples/extensions/file-trigger.ts | 2 +- .../examples/extensions/git-checkpoint.ts | 2 +- .../extensions/git-merge-and-resolve.ts | 2 +- .../extensions/github-issue-autocomplete.ts | 4 +- .../examples/extensions/gondolin/index.ts | 4 +- .../examples/extensions/handoff.ts | 8 +- .../coding-agent/examples/extensions/hello.ts | 4 +- .../extensions/hidden-thinking-label.ts | 2 +- .../examples/extensions/inline-bash.ts | 2 +- .../extensions/input-transform-streaming.ts | 2 +- .../examples/extensions/input-transform.ts | 2 +- .../examples/extensions/interactive-shell.ts | 2 +- .../extensions/kimi-deferred-tools.ts | 2 +- .../examples/extensions/mac-system-theme.ts | 2 +- .../examples/extensions/message-renderer.ts | 4 +- .../examples/extensions/minimal-mode.ts | 6 +- .../examples/extensions/modal-editor.ts | 4 +- .../examples/extensions/model-status.ts | 2 +- .../examples/extensions/notify.ts | 2 +- .../examples/extensions/overlay-qa-tests.ts | 6 +- .../examples/extensions/overlay-test.ts | 4 +- .../examples/extensions/permission-gate.ts | 2 +- .../examples/extensions/pirate.ts | 2 +- .../examples/extensions/preset.ts | 8 +- .../examples/extensions/project-trust.ts | 2 +- .../examples/extensions/prompt-customizer.ts | 2 +- .../examples/extensions/protected-paths.ts | 2 +- .../examples/extensions/provider-payload.ts | 2 +- .../coding-agent/examples/extensions/qna.ts | 6 +- .../examples/extensions/question.ts | 12 +- .../examples/extensions/questionnaire.ts | 12 +- .../examples/extensions/rainbow-editor.ts | 2 +- .../examples/extensions/reload-runtime.ts | 2 +- .../examples/extensions/rpc-demo.ts | 2 +- .../examples/extensions/sandbox/index.ts | 4 +- .../examples/extensions/send-user-message.ts | 2 +- .../examples/extensions/session-name.ts | 2 +- .../examples/extensions/shutdown-command.ts | 2 +- .../coding-agent/examples/extensions/snake.ts | 4 +- .../examples/extensions/space-invaders.ts | 4 +- .../coding-agent/examples/extensions/ssh.ts | 4 +- .../examples/extensions/status-line.ts | 2 +- .../examples/extensions/structured-output.ts | 4 +- .../examples/extensions/subagent/agents.ts | 2 +- .../examples/extensions/subagent/index.ts | 10 +- .../examples/extensions/summarize.ts | 8 +- .../extensions/system-prompt-header.ts | 2 +- .../examples/extensions/tic-tac-toe.ts | 6 +- .../examples/extensions/timed-confirm.ts | 2 +- .../examples/extensions/titlebar-spinner.ts | 2 +- .../coding-agent/examples/extensions/todo.ts | 6 +- .../examples/extensions/tool-override.ts | 4 +- .../coding-agent/examples/extensions/tools.ts | 6 +- .../examples/extensions/trigger-compact.ts | 2 +- .../examples/extensions/truncated-tool.ts | 6 +- .../examples/extensions/widget-placement.ts | 2 +- .../examples/extensions/with-deps/index.ts | 2 +- .../examples/extensions/working-indicator.ts | 2 +- .../extensions/working-message-test.ts | 2 +- .../coding-agent/examples/rpc-extension-ui.ts | 2 +- .../coding-agent/examples/sdk/01-minimal.ts | 2 +- .../examples/sdk/02-custom-model.ts | 2 +- .../examples/sdk/03-custom-prompt.ts | 7 +- .../coding-agent/examples/sdk/04-skills.ts | 2 +- .../coding-agent/examples/sdk/05-tools.ts | 2 +- .../examples/sdk/06-extensions.ts | 9 +- .../examples/sdk/07-context-files.ts | 7 +- .../examples/sdk/08-prompt-templates.ts | 2 +- .../examples/sdk/09-api-keys-and-oauth.ts | 2 +- .../coding-agent/examples/sdk/10-settings.ts | 2 +- .../coding-agent/examples/sdk/11-sessions.ts | 2 +- .../examples/sdk/12-full-control.ts | 4 +- .../examples/sdk/13-session-runtime.ts | 2 +- packages/coding-agent/examples/sdk/README.md | 4 +- .../install-lock/package-lock.json | 120 +++++++++--------- .../coding-agent/install-lock/package.json | 4 +- packages/coding-agent/npm-shrinkwrap.json | 52 ++++---- packages/coding-agent/package.json | 14 +- packages/coding-agent/src/bun/cli.ts | 2 +- .../coding-agent/src/bun/register-bedrock.ts | 4 +- packages/coding-agent/src/cli/args.ts | 2 +- packages/coding-agent/src/cli/auth-check.ts | 2 +- packages/coding-agent/src/cli/auth-command.ts | 2 +- .../coding-agent/src/cli/config-selector.ts | 2 +- .../coding-agent/src/cli/credential-print.ts | 2 +- .../coding-agent/src/cli/file-processor.ts | 2 +- .../coding-agent/src/cli/initial-message.ts | 2 +- packages/coding-agent/src/cli/list-models.ts | 4 +- .../coding-agent/src/cli/session-picker.ts | 2 +- packages/coding-agent/src/cli/startup-ui.ts | 4 +- .../coding-agent/src/client/remote-session.ts | 4 +- .../coding-agent/src/client/transcript.ts | 2 +- packages/coding-agent/src/config.ts | 2 +- .../src/core/agent-session-lifecycle.ts | 2 +- .../src/core/agent-session-runtime.ts | 2 +- .../src/core/agent-session-services.ts | 6 +- .../coding-agent/src/core/agent-session.ts | 10 +- .../coding-agent/src/core/auth-storage.ts | 2 +- packages/coding-agent/src/core/cache-stats.ts | 2 +- .../core/compaction/branch-summarization.ts | 8 +- .../src/core/compaction/compaction.ts | 14 +- .../coding-agent/src/core/compaction/utils.ts | 4 +- packages/coding-agent/src/core/defaults.ts | 2 +- .../src/core/evolution-runtime.ts | 4 +- .../src/core/export-html/index.ts | 2 +- .../src/core/export-html/tool-renderer.ts | 4 +- .../src/core/extensions/loader.ts | 54 ++++---- .../src/core/extensions/runner.ts | 6 +- .../coding-agent/src/core/extensions/types.ts | 10 +- .../src/core/extensions/wrapper.ts | 2 +- .../coding-agent/src/core/finalized-plan.ts | 2 +- .../src/core/harness-state-runtime.ts | 2 +- .../coding-agent/src/core/invocation-trace.ts | 4 +- packages/coding-agent/src/core/keybindings.ts | 4 +- .../coding-agent/src/core/lesson-reports.ts | 6 +- packages/coding-agent/src/core/messages.ts | 6 +- .../coding-agent/src/core/model-registry.ts | 2 +- .../coding-agent/src/core/model-resolver.ts | 4 +- .../coding-agent/src/core/model-runtime.ts | 4 +- .../coding-agent/src/core/models-store.ts | 2 +- .../coding-agent/src/core/private-report.ts | 6 +- .../coding-agent/src/core/project-trust.ts | 2 +- .../src/core/provider-attribution.ts | 2 +- .../src/core/provider-composer.ts | 4 +- .../src/core/remote-catalog-provider.ts | 2 +- .../src/core/runtime-credentials.ts | 2 +- packages/coding-agent/src/core/sdk.ts | 8 +- .../coding-agent/src/core/session-manager.ts | 4 +- .../coding-agent/src/core/settings-manager.ts | 6 +- .../coding-agent/src/core/skill-reports.ts | 6 +- packages/coding-agent/src/core/skills.ts | 2 +- .../src/core/subagents/controller.ts | 4 +- .../src/core/subagents/persistence.ts | 4 +- .../src/core/subagents/services.ts | 8 +- .../coding-agent/src/core/subagents/types.ts | 2 +- packages/coding-agent/src/core/telemetry.ts | 2 +- packages/coding-agent/src/core/tools/bash.ts | 4 +- packages/coding-agent/src/core/tools/edit.ts | 4 +- packages/coding-agent/src/core/tools/find.ts | 4 +- packages/coding-agent/src/core/tools/grep.ts | 4 +- packages/coding-agent/src/core/tools/index.ts | 2 +- packages/coding-agent/src/core/tools/ls.ts | 4 +- packages/coding-agent/src/core/tools/read.ts | 6 +- .../src/core/tools/render-utils.ts | 4 +- .../src/core/tools/request-user-input.ts | 2 +- .../src/core/tools/tool-definition-wrapper.ts | 2 +- .../src/core/tools/update-plan.ts | 4 +- packages/coding-agent/src/core/tools/write.ts | 4 +- .../coding-agent/src/core/usage-totals.ts | 2 +- .../src/extensions/llama/provider.ts | 4 +- .../coding-agent/src/extensions/llama/ui.ts | 2 +- packages/coding-agent/src/main.ts | 2 +- .../src/modes/interactive/components/armin.ts | 2 +- .../components/assistant-message.ts | 4 +- .../interactive/components/bash-execution.ts | 2 +- .../interactive/components/bordered-loader.ts | 2 +- .../components/branch-summary-message.ts | 2 +- .../components/compaction-summary-message.ts | 2 +- .../interactive/components/config-selector.ts | 2 +- .../interactive/components/countdown-timer.ts | 2 +- .../interactive/components/custom-editor.ts | 2 +- .../interactive/components/custom-entry.ts | 4 +- .../interactive/components/custom-message.ts | 6 +- .../modes/interactive/components/daxnuts.ts | 2 +- .../interactive/components/diffex-path.ts | 2 +- .../interactive/components/diffex-welcome.ts | 2 +- .../interactive/components/dynamic-border.ts | 2 +- .../components/earendil-announcement.ts | 2 +- .../interactive/components/evolution-menu.ts | 2 +- .../components/extension-editor.ts | 2 +- .../interactive/components/extension-input.ts | 2 +- .../components/extension-selector.ts | 2 +- .../components/first-time-setup.ts | 2 +- .../modes/interactive/components/footer.ts | 2 +- .../components/harness-version-selector.ts | 4 +- .../components/keybinding-hints.ts | 2 +- .../interactive/components/login-dialog.ts | 4 +- .../modes/interactive/components/mermaid.ts | 2 +- .../interactive/components/model-selector.ts | 4 +- .../interactive/components/oauth-selector.ts | 4 +- .../components/request-user-input.ts | 2 +- .../components/scoped-models-selector.ts | 4 +- .../components/session-selector-search.ts | 2 +- .../components/session-selector.ts | 2 +- .../components/settings-selector.ts | 4 +- .../components/show-images-selector.ts | 2 +- .../components/skill-invocation-message.ts | 2 +- .../interactive/components/skill-selector.ts | 2 +- .../components/status-indicator.ts | 2 +- .../modes/interactive/components/subagents.ts | 2 +- .../interactive/components/theme-selector.ts | 2 +- .../components/thinking-selector.ts | 4 +- .../interactive/components/tool-execution.ts | 2 +- .../interactive/components/tool-group.ts | 2 +- .../interactive/components/tree-selector.ts | 2 +- .../interactive/components/trust-selector.ts | 2 +- .../components/user-message-selector.ts | 2 +- .../interactive/components/user-message.ts | 2 +- .../interactive/components/visual-truncate.ts | 2 +- .../src/modes/interactive/interactive-mode.ts | 14 +- .../interactive/theme/theme-controller.ts | 2 +- .../src/modes/interactive/theme/theme.ts | 6 +- packages/coding-agent/src/modes/print-mode.ts | 2 +- .../coding-agent/src/modes/rpc/rpc-client.ts | 4 +- .../coding-agent/src/modes/rpc/rpc-types.ts | 4 +- .../coding-agent/src/package-manager-cli.ts | 2 +- .../coding-agent/src/server/create-harness.ts | 2 +- packages/coding-agent/src/utils/changelog.ts | 2 +- .../src/utils/tool-result-images.ts | 2 +- ...gent-session-auto-compaction-queue.test.ts | 10 +- .../test/agent-session-branching.test.ts | 2 +- .../test/agent-session-compaction.test.ts | 4 +- .../test/agent-session-concurrent.test.ts | 4 +- .../agent-session-dynamic-provider.test.ts | 4 +- .../test/agent-session-dynamic-tools.test.ts | 2 +- .../test/agent-session-retry.test.ts | 9 +- .../test/agent-session-runtime-events.test.ts | 2 +- .../test/agent-session-stats.test.ts | 4 +- .../test/assistant-message.test.ts | 4 +- packages/coding-agent/test/auth-check.test.ts | 2 +- .../coding-agent/test/auth-storage.test.ts | 2 +- .../test/bash-execution-width.test.ts | 2 +- .../test/branch-summary-extensions.test.ts | 2 +- .../coding-agent/test/cache-stats.test.ts | 2 +- .../client/remote-session-lifecycle.test.ts | 2 +- .../client/remote-session-ownership.test.ts | 2 +- packages/coding-agent/test/client/support.ts | 4 +- .../test/client/transcript.test.ts | 2 +- .../compaction-extensions-example.test.ts | 2 +- .../test/compaction-extensions.test.ts | 4 +- .../test/compaction-serialization.test.ts | 2 +- .../test/compaction-summary-reasoning.test.ts | 8 +- packages/coding-agent/test/compaction.test.ts | 6 +- packages/coding-agent/test/config.test.ts | 96 ++++++-------- .../test/credential-print.test.ts | 2 +- .../custom-editor-history-keybindings.test.ts | 2 +- .../coding-agent/test/custom-message.test.ts | 2 +- .../coding-agent/test/diffex-path.test.ts | 2 +- .../coding-agent/test/diffex-welcome.test.ts | 4 +- .../coding-agent/test/dynamic-border.test.ts | 2 +- .../test/edit-tool-no-full-redraw.test.ts | 2 +- .../test/edit-tool-streaming-terminal.test.ts | 2 +- .../test/evolution-footer-status.test.ts | 2 +- .../coding-agent/test/evolution-menu.test.ts | 4 +- .../test/evolution-runtime.test.ts | 4 +- .../test/evolved-skill-catalog.test.ts | 2 +- .../test/export-html-whitespace.test.ts | 2 +- .../test/extensions-discovery.test.ts | 4 +- .../test/first-time-setup.test.ts | 2 +- .../coding-agent/test/footer-width.test.ts | 4 +- .../test/harness-state-runtime.test.ts | 2 +- .../test/harness-version-selector.test.ts | 2 +- .../test/interactive-mode-evolution.test.ts | 2 +- .../interactive-mode-harness-version.test.ts | 4 +- .../interactive-mode-plan-controls.test.ts | 4 +- .../interactive-mode-plan-handoff.test.ts | 6 +- .../test/interactive-mode-plan-status.test.ts | 4 +- .../test/interactive-mode-skills.test.ts | 2 +- .../test/interactive-mode-status.test.ts | 4 +- ...ractive-mode-subagent-coordination.test.ts | 2 +- .../interactive-transcript-layout.test.ts | 6 +- .../coding-agent/test/interactive-tui.test.ts | 4 +- .../test/invocation-tracing.test.ts | 6 +- .../coding-agent/test/llama-extension.test.ts | 2 +- .../coding-agent/test/model-registry.test.ts | 10 +- .../coding-agent/test/model-resolver.test.ts | 2 +- .../test/model-runtime-auth-options.test.ts | 2 +- .../model-runtime-cloudflare-compat.test.ts | 2 +- .../model-runtime-credential-sync.test.ts | 2 +- ...model-runtime-modify-models-compat.test.ts | 2 +- .../test/model-runtime-test-utils.ts | 2 +- .../coding-agent/test/model-selector.test.ts | 2 +- .../test/model-thinking-selection.test.ts | 4 +- .../coding-agent/test/models-store.test.ts | 2 +- .../coding-agent/test/oauth-selector.test.ts | 2 +- .../test/package-command-paths.test.ts | 4 +- packages/coding-agent/test/print-mode.test.ts | 2 +- packages/coding-agent/test/radius.test.ts | 2 +- .../test/remote-catalog-provider.test.ts | 2 +- .../test/request-user-input-tool.test.ts | 4 +- .../coding-agent/test/resource-loader.test.ts | 8 +- .../rpc-prompt-response-semantics.test.ts | 4 +- packages/coding-agent/test/rpc.test.ts | 2 +- .../test/runtime-credentials.test.ts | 2 +- .../test/sdk-codex-cache-probe-tool-loop.ts | 2 +- .../test/sdk-openrouter-attribution.test.ts | 2 +- .../test/sdk-session-manager.test.ts | 2 +- .../test/sdk-stream-options.test.ts | 2 +- .../test/secondary-dialogs.test.ts | 2 +- .../test/server/create-harness.test.ts | 8 +- .../test/session-selector-path-delete.test.ts | 2 +- .../test/session-selector-rename.test.ts | 2 +- .../test/settings-selector.test.ts | 2 +- .../coding-agent/test/skill-selector.test.ts | 2 +- .../test/status-indicator.test.ts | 2 +- .../test/streaming-render-debug.ts | 4 +- .../test/subagents-component.test.ts | 2 +- .../agent-session-bash-persistence.test.ts | 4 +- .../agent-session-collaboration-mode.test.ts | 4 +- .../suite/agent-session-compaction.test.ts | 2 +- ...t-session-current-plan-restoration.test.ts | 4 +- .../agent-session-finalized-plan.test.ts | 2 +- .../agent-session-harness-version.test.ts | 6 +- .../agent-session-model-extension.test.ts | 4 +- .../test/suite/agent-session-prompt.test.ts | 6 +- .../test/suite/agent-session-queue.test.ts | 6 +- .../suite/agent-session-retry-events.test.ts | 4 +- .../test/suite/agent-session-runtime.test.ts | 2 +- .../agent-session-subagent-lifecycle.test.ts | 6 +- .../agent-session-tool-result-images.test.ts | 6 +- .../suite/agent-session-update-plan.test.ts | 2 +- packages/coding-agent/test/suite/harness.ts | 10 +- .../test/suite/lax-message-content.test.ts | 4 +- ...113-agent-session-event-settlement.test.ts | 4 +- .../177-compaction-busy-state.test.ts | 4 +- .../177-skill-toggle-collaboration.test.ts | 2 +- .../2-lesson-report-isolation.test.ts | 6 +- .../2-skill-report-isolation.test.ts | 6 +- ...2023-queued-slash-command-followup.test.ts | 6 +- ...753-reload-stale-resource-settings.test.ts | 2 +- ...-allowlist-filters-extension-tools.test.ts | 2 +- .../2860-replaced-session-context.test.ts | 2 +- .../3-lesson-report-scoring.test.ts | 4 +- .../3-skill-report-scoring.test.ts | 4 +- .../3217-scoped-model-order.test.ts | 2 +- ...3317-network-connection-lost-retry.test.ts | 2 +- ...uiltin-tools-keeps-extension-tools.test.ts | 2 +- .../3982-message-end-cost-override.test.ts | 2 +- .../regressions/4-lesson-grooming.test.ts | 4 +- .../regressions/4-skill-grooming.test.ts | 4 +- ...hinking-toggle-pending-tool-render.test.ts | 6 +- .../5217-compaction-reason.test.ts | 2 +- .../5433-extension-oauth-prompt-input.test.ts | 2 +- .../5596-missing-theme-export.test.ts | 4 +- .../5943-session-start-notify.test.ts | 4 +- .../5998-blocked-tool-terminate.test.ts | 4 +- ...19-explicit-provider-retry-message.test.ts | 2 +- ...2-extension-active-tools-next-turn.test.ts | 2 +- .../6324-branch-summary-ambient-auth.test.ts | 2 +- .../6363-agent-settled-event.test.ts | 4 +- ...tion-retries-transient-stream-drop.test.ts | 8 +- .../6768-copilot-compaction-base-url.test.ts | 2 +- .../6904-dns-transport-retry.test.ts | 2 +- .../6949-unavailable-scoped-model.test.ts | 4 +- .../6999-models-json-hot-reload.test.ts | 2 +- .../7027-credential-refresh-hang.test.ts | 2 +- .../7150-rpc-prompt-during-compaction.test.ts | 2 +- .../7153-scoped-models-refresh.test.ts | 4 +- ...l-selector-filter-resets-selection.test.ts | 2 +- ...253-manual-compact-during-response.test.ts | 4 +- .../7290-json-stream-linear.test.ts | 2 +- .../7301-stalled-availability-refresh.test.ts | 2 +- .../7443-model-command-cached-match.test.ts | 2 +- .../7731-tui-method-wrapping.test.ts | 2 +- .../pre-prompt-compaction-no-continue.test.ts | 2 +- .../regressions/tree-during-streaming.test.ts | 2 +- .../test/suite/runtime-telemetry.test.ts | 6 +- .../test/suite/subagent-actions.test.ts | 6 +- .../test/suite/subagent-agents.test.ts | 2 +- .../test/suite/subagent-coordination.test.ts | 4 +- .../test/suite/subagent-harness.ts | 2 +- .../suite/subagent-parent-messaging.test.ts | 6 +- .../test/suite/subagent-persistence.test.ts | 6 +- .../test/suite/subagent-registration.test.ts | 6 +- .../test/suite/subagent-services.test.ts | 2 +- .../test/suite/subagent-startup.test.ts | 6 +- .../test/syntax-highlight.test.ts | 2 +- .../coding-agent/test/test-harness.test.ts | 4 +- packages/coding-agent/test/test-harness.ts | 8 +- .../coding-agent/test/theme-detection.test.ts | 7 +- .../coding-agent/test/theme-no-color.test.ts | 2 +- .../test/tool-execution-component.test.ts | 2 +- .../test/tool-group-component.test.ts | 2 +- .../coding-agent/test/tree-selector.test.ts | 2 +- .../test/truncate-to-width.test.ts | 2 +- .../coding-agent/test/trust-selector.test.ts | 2 +- .../test/update-plan-tool.test.ts | 6 +- .../test/user-message-selector.test.ts | 2 +- .../coding-agent/test/user-message.test.ts | 2 +- packages/coding-agent/test/utilities.ts | 8 +- packages/coding-agent/tsconfig.build.json | 16 +-- packages/coding-agent/tsconfig.examples.json | 8 +- packages/coding-agent/vitest.config.ts | 4 +- packages/evals/package.json | 6 +- packages/evals/src/diffex-harness.ts | 4 +- packages/evals/src/extensions.eval.ts | 4 +- packages/evals/src/vitest-evals/artifacts.ts | 13 +- .../evals/test/vitest-evals/artifacts.test.ts | 10 +- packages/evals/vitest.config.ts | 2 +- packages/evals/vitest.test.config.ts | 2 +- packages/evolution/package.json | 8 +- packages/evolution/src/contracts.ts | 4 +- packages/evolution/src/control-service.ts | 4 +- packages/evolution/src/curator.ts | 4 +- packages/evolution/src/evidence-corpus.ts | 2 +- .../evolution/src/evidence-eligibility.ts | 2 +- .../evolution/src/evolution-memory-writer.ts | 2 +- packages/evolution/src/filesystem-store.ts | 2 +- packages/evolution/src/lesson-score-store.ts | 2 +- packages/evolution/src/ports.ts | 2 +- packages/evolution/src/proposal-ranking.ts | 2 +- packages/evolution/src/reflector-tools.ts | 2 +- packages/evolution/src/skill-curator-tools.ts | 2 +- packages/evolution/src/skill-curator.ts | 2 +- .../evolution/src/skill-draft-validator.ts | 2 +- packages/evolution/src/skill-evaluator.ts | 2 +- packages/evolution/src/skill-score-store.ts | 6 +- packages/evolution/src/skill-writer.ts | 2 +- packages/evolution/src/token-estimator.ts | 2 +- packages/evolution/test/control-plane.test.ts | 2 +- .../evolution/test/control-service.test.ts | 4 +- packages/evolution/test/curator.test.ts | 2 +- .../test/evidence-eligibility.test.ts | 2 +- .../evolution/test/proposal-ranking.test.ts | 2 +- packages/evolution/test/reflector.test.ts | 2 +- .../test/skill-candidate-registry.test.ts | 4 +- packages/evolution/test/skill-curator.test.ts | 2 +- .../test/skill-draft-validator.test.ts | 2 +- .../evolution/test/skill-synthesizer.test.ts | 2 +- packages/evolution/vitest.config.ts | 2 +- packages/harness-state/README.md | 2 +- packages/harness-state/package.json | 4 +- packages/harness-trace/package.json | 6 +- packages/harness-trace/src/codec.ts | 2 +- .../harness-trace/src/materialized-types.ts | 2 +- packages/harness-trace/src/recorder.ts | 2 +- packages/harness-trace/src/types.ts | 2 +- .../harness-trace/test/harness-trace.test.ts | 7 +- packages/protocol/README.md | 4 +- packages/protocol/package.json | 4 +- packages/server/README.md | 14 +- packages/server/package.json | 8 +- packages/server/src/connection.ts | 2 +- packages/server/src/errors.ts | 2 +- packages/server/src/protocol.ts | 4 +- packages/server/src/server.ts | 2 +- packages/server/src/sessions.ts | 2 +- packages/server/src/snapshots.ts | 2 +- packages/server/src/testing/client.ts | 2 +- packages/server/src/testing/service.ts | 2 +- .../server/src/transports/unix/listener.ts | 2 +- .../src/transports/websocket/listener.ts | 2 +- packages/server/src/types.ts | 2 +- packages/server/test/conformance.test.ts | 2 +- packages/server/test/protocol.test.ts | 4 +- packages/server/test/server.test.ts | 2 +- packages/server/test/sessions.test.ts | 2 +- packages/server/test/unix-connection.test.ts | 2 +- packages/server/tsconfig.test.json | 2 +- packages/server/vitest.config.ts | 4 +- .../session-backends/sqlite-node/README.md | 4 +- .../session-backends/sqlite-node/package.json | 10 +- .../sqlite-node/src/sqlite/branch-cache.ts | 4 +- .../sqlite-node/src/sqlite/repo.ts | 6 +- .../sqlite-node/src/sqlite/search-backend.ts | 4 +- .../src/sqlite/storage/branch-entries.ts | 2 +- .../sqlite-node/src/sqlite/storage/entries.ts | 2 +- .../sqlite-node/src/sqlite/storage/lanes.ts | 2 +- .../sqlite-node/src/sqlite/storage/records.ts | 2 +- .../src/sqlite/storage/session-sequences.ts | 2 +- .../src/sqlite/storage/session-stats.ts | 4 +- .../src/sqlite/storage/sessions.ts | 2 +- .../sqlite-node/src/sqlite/types.ts | 2 +- .../sqlite-node/test/branch-cache.test.ts | 2 +- .../sqlite-node/test/branch-query.test.ts | 2 +- .../sqlite-node/test/conformance.test.ts | 6 +- .../sqlite-node/test/repository.test.ts | 2 +- .../sqlite-node/test/search.test.ts | 2 +- .../sqlite-node/test/test-utils.ts | 4 +- .../sqlite-node/test/writer-leases.test.ts | 2 +- .../sqlite-node/vitest.config.ts | 10 +- packages/telemetry/README.md | 26 ++-- packages/telemetry/package.json | 2 +- packages/tui/README.md | 26 ++-- packages/tui/package.json | 2 +- packages/tui/src/layout-node.ts | 2 +- packages/tui/src/tui.ts | 2 +- scripts/agent-treeshake-smoke-entry.ts | 6 +- scripts/browser-smoke-entry.ts | 10 +- scripts/check-pinned-deps.mjs | 6 +- .../generate-coding-agent-install-lock.mjs | 11 +- scripts/generate-coding-agent-shrinkwrap.mjs | 4 +- scripts/local-release.mjs | 20 +-- scripts/sync-versions.js | 2 +- scripts/sync-versions.test.mjs | 20 +-- tsconfig.json | 60 ++++----- vitest.base.ts | 20 +-- 604 files changed, 1459 insertions(+), 1572 deletions(-) diff --git a/.diffex/extensions/import-repro.ts b/.diffex/extensions/import-repro.ts index 5a9deb908..67f01511e 100644 --- a/.diffex/extensions/import-repro.ts +++ b/.diffex/extensions/import-repro.ts @@ -18,7 +18,7 @@ import { Buffer } from "node:buffer"; import { existsSync, readFileSync, writeFileSync } from "node:fs"; import { basename, isAbsolute, join, resolve } from "node:path"; -import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@diffexai/diffex"; const GIST_ID_RE = /^[0-9a-fA-F]{20,}$/; const GIST_URL_RE = /^https:\/\/gist\.github\.com\/(?:[^/]+\/)?([0-9a-fA-F]{20,})(?:[/#?].*)?$/; diff --git a/.diffex/extensions/prompt-url-widget.ts b/.diffex/extensions/prompt-url-widget.ts index 0fb462138..e629fe2cb 100644 --- a/.diffex/extensions/prompt-url-widget.ts +++ b/.diffex/extensions/prompt-url-widget.ts @@ -1,8 +1,8 @@ import { readFile } from "node:fs/promises"; import { homedir } from "node:os"; import { resolve } from "node:path"; -import { DynamicBorder, type ExtensionAPI, type ExtensionContext } from "@earendil-works/diffex-coding-agent"; -import { Container, hyperlink, Text } from "@earendil-works/diffex-tui"; +import { DynamicBorder, type ExtensionAPI, type ExtensionContext } from "@diffexai/diffex"; +import { Container, hyperlink, Text } from "@diffexai/diffex-tui"; const PR_PROMPT_PATTERN = /^\s*You are given one or more GitHub PR URLs:\s*(\S+)/im; const ISSUE_PROMPT_PATTERN = /^\s*Analyze GitHub issue\(s\):\s*(\S+)/im; diff --git a/.diffex/extensions/redraws.ts b/.diffex/extensions/redraws.ts index fb1eec2ed..f24a85693 100644 --- a/.diffex/extensions/redraws.ts +++ b/.diffex/extensions/redraws.ts @@ -4,8 +4,8 @@ * Exposes /tui to show TUI redraw stats. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { Text } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { Text } from "@diffexai/diffex-tui"; export default function (pi: ExtensionAPI) { pi.registerCommand("tui", { diff --git a/.diffex/prompts/cl.md b/.diffex/prompts/cl.md index 592d2d67f..9afd7b8d5 100644 --- a/.diffex/prompts/cl.md +++ b/.diffex/prompts/cl.md @@ -50,5 +50,5 @@ Sections (in order): - `### Removed` - Removed features Attribution: -- Internal: `Fixed foo ([#123](https://github.com/earendil-works/pi-mono/issues/123))` -- External: `Added bar ([#456](https://github.com/earendil-works/pi-mono/pull/456) by [@user](https://github.com/user))` +- Internal: `Fixed foo ([#123](https://github.com/diffexai/diffex/issues/123))` +- External: `Added bar ([#456](https://github.com/diffexai/diffex/pull/456) by [@user](https://github.com/user))` diff --git a/RELEASING.md b/RELEASING.md index 5d4af6ee7..9cf084080 100644 --- a/RELEASING.md +++ b/RELEASING.md @@ -7,7 +7,7 @@ The release tag also builds binaries, stages the GitHub release, announces the v - Use a clean `main` branch with all intended changes merged. - Confirm GitHub Actions can start jobs and the repository billing or spending limit is not blocking runners. -- Confirm the `@earendil-works` npm organization exists and your npm account has package publishing permission with account-level two-factor authentication enabled. +- Confirm the `@diffexai` npm organization exists and your npm account has package publishing permission with account-level two-factor authentication enabled. - Use npm 11.15.0 or newer when configuring trusted publishers. - Confirm every public package has repository metadata pointing to `diffexai/diffex`. @@ -16,7 +16,7 @@ The release tag also builds binaries, stages the GitHub release, announces the v npm requires a package to exist before a trusted publisher can be configured. Use this bootstrap process only once, before the first normal release. -1. Sign in with an npm account that can publish public packages under `@earendil-works`. +1. Sign in with an npm account that can publish public packages under `@diffexai`. ```bash npm login @@ -49,7 +49,7 @@ Use this bootstrap process only once, before the first normal release. 5. Verify each package has the expected trusted publisher. ```bash - npm trust list @earendil-works/diffex-coding-agent + npm trust list @diffexai/diffex ``` 6. Restrict traditional token publishing after trusted publishing is verified. diff --git a/docs/cloud-runtime.md b/docs/cloud-runtime.md index 99dd4f07a..ce110ace1 100644 --- a/docs/cloud-runtime.md +++ b/docs/cloud-runtime.md @@ -5,8 +5,8 @@ The hosted Diffex product runs the same Pi-derived coding-agent runtime as local Diffex. It does not use the archived Rust implementation or a cloud-specific prompt loop. -`@earendil-works/diffex-server` binds the coding-agent runtime to `@earendil-works/diffex-protocol` inside an isolated sandbox. -`@earendil-works/diffex-client` connects to that server through a transport supplied by the product. +`@diffexai/diffex-server` binds the coding-agent runtime to `@diffexai/diffex-protocol` inside an isolated sandbox. +`@diffexai/diffex-client` connects to that server through a transport supplied by the product. ## Boundary @@ -25,7 +25,9 @@ Only Daytona's opaque placeholder enters the sandbox environment, and the real p ## Runtime Image `Dockerfile.runtime` produces the AMD64 image used to create the Daytona sandbox snapshot. -The runtime-image workflow verifies this image on pull requests and publishes an immutable `ghcr.io/diffexai/diffex-runtime:sha-` image after the matching `main` commit passes review. +The runtime-image workflow is disabled during the identity migration, including manual dispatches. +Phase 3 re-enables validation and immutable `ghcr.io/diffexai/diffex-runtime:sha-` publication after reviewing the image and its consumers. +Keep production on its existing tested image and Daytona snapshot until that phase completes. Before a cloud release, register GHCR with Daytona, create a Daytona snapshot from that exact immutable image tag or digest, and set `DAYTONA_SANDBOX_SNAPSHOT` to the resulting snapshot name. Do not use a floating image tag for production. diff --git a/package-lock.json b/package-lock.json index 121a08121..0fd04e413 100644 --- a/package-lock.json +++ b/package-lock.json @@ -719,59 +719,59 @@ "node": ">=20" } }, - "node_modules/@earendil-works/diffex-agent-core": { + "node_modules/@diffexai/diffex": { + "resolved": "packages/coding-agent", + "link": true + }, + "node_modules/@diffexai/diffex-agent-core": { "resolved": "packages/agent", "link": true }, - "node_modules/@earendil-works/diffex-ai": { + "node_modules/@diffexai/diffex-ai": { "resolved": "packages/ai", "link": true }, - "node_modules/@earendil-works/diffex-client": { + "node_modules/@diffexai/diffex-client": { "resolved": "packages/client", "link": true }, - "node_modules/@earendil-works/diffex-coding-agent": { - "resolved": "packages/coding-agent", - "link": true - }, - "node_modules/@earendil-works/diffex-coding-agent-server": { + "node_modules/@diffexai/diffex-coding-agent-server": { "resolved": "packages/coding-agent-server", "link": true }, - "node_modules/@earendil-works/diffex-evals": { + "node_modules/@diffexai/diffex-evals": { "resolved": "packages/evals", "link": true }, - "node_modules/@earendil-works/diffex-evolution": { + "node_modules/@diffexai/diffex-evolution": { "resolved": "packages/evolution", "link": true }, - "node_modules/@earendil-works/diffex-harness-state": { + "node_modules/@diffexai/diffex-harness-state": { "resolved": "packages/harness-state", "link": true }, - "node_modules/@earendil-works/diffex-harness-trace": { + "node_modules/@diffexai/diffex-harness-trace": { "resolved": "packages/harness-trace", "link": true }, - "node_modules/@earendil-works/diffex-protocol": { + "node_modules/@diffexai/diffex-protocol": { "resolved": "packages/protocol", "link": true }, - "node_modules/@earendil-works/diffex-server": { + "node_modules/@diffexai/diffex-server": { "resolved": "packages/server", "link": true }, - "node_modules/@earendil-works/diffex-session-backend-sqlite-node": { + "node_modules/@diffexai/diffex-session-backend-sqlite-node": { "resolved": "packages/session-backends/sqlite-node", "link": true }, - "node_modules/@earendil-works/diffex-telemetry": { + "node_modules/@diffexai/diffex-telemetry": { "resolved": "packages/telemetry", "link": true }, - "node_modules/@earendil-works/diffex-tui": { + "node_modules/@diffexai/diffex-tui": { "resolved": "packages/tui", "link": true }, @@ -5688,12 +5688,12 @@ } }, "packages/agent": { - "name": "@earendil-works/diffex-agent-core", + "name": "@diffexai/diffex-agent-core", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "diff": "8.0.4", "ignore": "7.0.5", "typebox": "1.3.7", @@ -5734,13 +5734,13 @@ "license": "MIT" }, "packages/ai": { - "name": "@earendil-works/diffex-ai", + "name": "@diffexai/diffex-ai", "version": "0.2.0", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", "@aws-sdk/client-bedrock-runtime": "3.1048.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "@google/genai": "1.52.0", "@mistralai/mistralai": "2.2.6", "@opentelemetry/api": "1.9.0", @@ -5781,11 +5781,11 @@ "license": "MIT" }, "packages/client": { - "name": "@earendil-works/diffex-client", + "name": "@diffexai/diffex-client", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-protocol": "^0.2.0" + "@diffexai/diffex-protocol": "^0.2.0" }, "devDependencies": { "shx": "0.4.0", @@ -5796,16 +5796,16 @@ } }, "packages/coding-agent": { - "name": "@earendil-works/diffex-coding-agent", + "name": "@diffexai/diffex", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-agent-core": "^0.2.0", - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-client": "^0.2.0", - "@earendil-works/diffex-harness-state": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", - "@earendil-works/diffex-tui": "^0.2.0", + "@diffexai/diffex-agent-core": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-client": "^0.2.0", + "@diffexai/diffex-harness-state": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", + "@diffexai/diffex-tui": "^0.2.0", "@napi-rs/keyring": "1.3.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", @@ -5847,19 +5847,19 @@ } }, "packages/coding-agent-server": { - "name": "@earendil-works/diffex-coding-agent-server", + "name": "@diffexai/diffex-coding-agent-server", "version": "0.2.0", "license": "Apache-2.0", "dependencies": { - "@earendil-works/diffex-coding-agent": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", - "@earendil-works/diffex-server": "^0.2.0" + "@diffexai/diffex": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", + "@diffexai/diffex-server": "^0.2.0" }, "bin": { "diffex-runtime-server": "dist/cli.js" }, "devDependencies": { - "@earendil-works/diffex-client": "^0.2.0", + "@diffexai/diffex-client": "^0.2.0", "shx": "0.4.0", "vitest": "4.1.9", "ws": "8.21.0" @@ -5965,11 +5965,11 @@ "license": "MIT" }, "packages/evals": { - "name": "@earendil-works/diffex-evals", + "name": "@diffexai/diffex-evals", "version": "0.2.0", "devDependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-coding-agent": "^0.2.0", + "@diffexai/diffex": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", "@types/node": "24.12.4", "shx": "0.4.0", "typescript": "5.9.3", @@ -5995,12 +5995,12 @@ "license": "MIT" }, "packages/evolution": { - "name": "@earendil-works/diffex-evolution", + "name": "@diffexai/diffex-evolution", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-harness-state": "0.2.0", - "@earendil-works/diffex-harness-trace": "0.2.0", + "@diffexai/diffex-harness-state": "0.2.0", + "@diffexai/diffex-harness-trace": "0.2.0", "proper-lockfile": "4.1.2" }, "devDependencies": { @@ -6032,7 +6032,7 @@ "license": "MIT" }, "packages/harness-state": { - "name": "@earendil-works/diffex-harness-state", + "name": "@diffexai/diffex-harness-state", "version": "0.2.0", "license": "MIT", "dependencies": { @@ -6050,11 +6050,11 @@ } }, "packages/harness-trace": { - "name": "@earendil-works/diffex-harness-trace", + "name": "@diffexai/diffex-harness-trace", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-telemetry": "0.2.0" + "@diffexai/diffex-telemetry": "0.2.0" }, "devDependencies": { "@types/node": "24.12.4", @@ -6083,7 +6083,7 @@ "license": "MIT" }, "packages/protocol": { - "name": "@earendil-works/diffex-protocol", + "name": "@diffexai/diffex-protocol", "version": "0.2.0", "license": "MIT", "dependencies": { @@ -6098,12 +6098,12 @@ } }, "packages/server": { - "name": "@earendil-works/diffex-server", + "name": "@diffexai/diffex-server", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", "ws": "8.21.0" }, "devDependencies": { @@ -6116,12 +6116,12 @@ } }, "packages/session-backends/sqlite-node": { - "name": "@earendil-works/diffex-session-backend-sqlite-node", + "name": "@diffexai/diffex-session-backend-sqlite-node", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-agent-core": "^0.2.0", - "@earendil-works/diffex-ai": "^0.2.0" + "@diffexai/diffex-agent-core": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0" }, "devDependencies": { "@vitest/coverage-v8": "4.1.9", @@ -6132,7 +6132,7 @@ } }, "packages/telemetry": { - "name": "@earendil-works/diffex-telemetry", + "name": "@diffexai/diffex-telemetry", "version": "0.2.0", "license": "MIT", "devDependencies": { @@ -6161,7 +6161,7 @@ "license": "MIT" }, "packages/tui": { - "name": "@earendil-works/diffex-tui", + "name": "@diffexai/diffex-tui", "version": "0.2.0", "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index ad965854b..aab9c585f 100644 --- a/package.json +++ b/package.json @@ -26,7 +26,7 @@ "check:model-data": "npm --prefix packages/ai run check:model-data", "generate:model-catalog": "npm --prefix packages/ai run generate-model-catalog", "diff:model-catalog": "node scripts/diff-model-catalog.mjs", - "eval": "npm run eval --workspace=@earendil-works/diffex-evals --", + "eval": "npm run eval --workspace=@diffexai/diffex-evals --", "check:model-catalog": "node scripts/publish-model-catalog.mjs --input .artifacts/model-catalog --dry-run", "profile:tui": "node scripts/profile-coding-agent-node.mjs --mode tui", "profile:rpc": "node scripts/profile-coding-agent-node.mjs --mode rpc", diff --git a/packages/agent/README.md b/packages/agent/README.md index 39f50430a..890c6756a 100644 --- a/packages/agent/README.md +++ b/packages/agent/README.md @@ -1,23 +1,23 @@ -# @earendil-works/diffex-agent-core +# @diffexai/diffex-agent-core -Stateful agent with tool execution and event streaming. Built on `@earendil-works/diffex-ai`. +Stateful agent with tool execution and event streaming. Built on `@diffexai/diffex-ai`. ## Installation ```bash -npm install @earendil-works/diffex-agent-core +npm install @diffexai/diffex-agent-core ``` ### SQLite session backends -The SQLite session backend and the `node:sqlite` adapter live in a separate package, `@earendil-works/diffex-session-backend-sqlite-node`, so the core package does not pull in runtime builtins or native SQLite dependencies by default. The backend accepts a runtime-specific SQLite factory, allowing other session backends to ship as their own packages in the future. +The SQLite session backend and the `node:sqlite` adapter live in a separate package, `@diffexai/diffex-session-backend-sqlite-node`, so the core package does not pull in runtime builtins or native SQLite dependencies by default. The backend accepts a runtime-specific SQLite factory, allowing other session backends to ship as their own packages in the future. ## Quick Start ```typescript -import { Agent } from "@earendil-works/diffex-agent-core"; -import { createModels } from "@earendil-works/diffex-ai"; -import { anthropicProvider } from "@earendil-works/diffex-ai/providers/anthropic"; +import { Agent } from "@diffexai/diffex-agent-core"; +import { createModels } from "@diffexai/diffex-ai"; +import { anthropicProvider } from "@diffexai/diffex-ai/providers/anthropic"; const models = createModels(); models.setProvider(anthropicProvider()); @@ -387,7 +387,7 @@ Follow-up messages are checked only when there are no more tool calls and no ste Extend `AgentMessage` via declaration merging: ```typescript -declare module "@earendil-works/diffex-agent-core" { +declare module "@diffexai/diffex-agent-core" { interface CustomAgentMessages { notification: { role: "notification"; text: string; timestamp: number }; } @@ -469,7 +469,7 @@ Return `terminate: true` from `execute()`, a blocked `beforeToolCall`, or `after For browser apps that proxy through a backend: ```typescript -import { Agent, streamProxy } from "@earendil-works/diffex-agent-core"; +import { Agent, streamProxy } from "@diffexai/diffex-agent-core"; const agent = new Agent({ streamFn: (model, context, options) => @@ -486,7 +486,7 @@ const agent = new Agent({ For direct control without the Agent class: ```typescript -import { agentLoop, agentLoopContinue } from "@earendil-works/diffex-agent-core"; +import { agentLoop, agentLoopContinue } from "@diffexai/diffex-agent-core"; const context: AgentContext = { systemPrompt: "You are helpful.", diff --git a/packages/agent/docs/harness-v2.md b/packages/agent/docs/harness-v2.md index ab9f53325..9e856e4bc 100644 --- a/packages/agent/docs/harness-v2.md +++ b/packages/agent/docs/harness-v2.md @@ -2757,7 +2757,7 @@ Diffex ships no exporter and requires no backend-specific telemetry implementati ### Package ownership -The generic contract, schema-definition machinery, shared no-op, and in-memory reference implementation live under `packages/telemetry/src/` and are exported from `@earendil-works/diffex-telemetry`. The runner-independent conformance cases live under `packages/telemetry/src/testing/` and are exported from `@earendil-works/diffex-telemetry/testing`. Diffex-ai imports only `TelemetryContext` for request options; it owns no span schema or helper and emits no telemetry itself. `packages/agent/src/harness/telemetry.ts` owns both `AI_TELEMETRY_SCHEMA` / `startAiSpan()` and `HARNESS_TELEMETRY_SCHEMA` / `startHarnessSpan()`, plus the readonly `AGENT_TELEMETRY_SCHEMAS` tuple that composes their typed vocabularies without merging their schema data or versions. The agent package root re-exports those domain schemas, helpers, tuple, and the generic telemetry surface. There is one generic contract and one domain-schema owner. +The generic contract, schema-definition machinery, shared no-op, and in-memory reference implementation live under `packages/telemetry/src/` and are exported from `@diffexai/diffex-telemetry`. The runner-independent conformance cases live under `packages/telemetry/src/testing/` and are exported from `@diffexai/diffex-telemetry/testing`. Diffex-ai imports only `TelemetryContext` for request options; it owns no span schema or helper and emits no telemetry itself. `packages/agent/src/harness/telemetry.ts` owns both `AI_TELEMETRY_SCHEMA` / `startAiSpan()` and `HARNESS_TELEMETRY_SCHEMA` / `startHarnessSpan()`, plus the readonly `AGENT_TELEMETRY_SCHEMAS` tuple that composes their typed vocabularies without merging their schema data or versions. The agent package root re-exports those domain schemas, helpers, tuple, and the generic telemetry surface. There is one generic contract and one domain-schema owner. `AgentHarnessOptions.telemetryContext` defaults to the no-op context, and the agent-side request wrapper emits `diffex.ai.request` through the agent-owned AI schema. diff --git a/packages/agent/docs/telemetry-schema.md b/packages/agent/docs/telemetry-schema.md index de1984972..281ca8e0c 100644 --- a/packages/agent/docs/telemetry-schema.md +++ b/packages/agent/docs/telemetry-schema.md @@ -1,4 +1,4 @@ -# Pi Agent Telemetry Schemas +# Diffex Agent Telemetry Schemas diff --git a/packages/agent/package.json b/packages/agent/package.json index 68cf32c2b..2b18f9443 100644 --- a/packages/agent/package.json +++ b/packages/agent/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-agent-core", + "name": "@diffexai/diffex-agent-core", "version": "0.2.0", "description": "General-purpose agent with transport abstraction, state management, and attachment support", "type": "module", @@ -35,8 +35,8 @@ "prepublishOnly": "npm run build" }, "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "diff": "8.0.4", "ignore": "7.0.5", "typebox": "1.3.7", diff --git a/packages/agent/scripts/generate-telemetry-docs.ts b/packages/agent/scripts/generate-telemetry-docs.ts index c05b6edbe..900d19646 100644 --- a/packages/agent/scripts/generate-telemetry-docs.ts +++ b/packages/agent/scripts/generate-telemetry-docs.ts @@ -1,7 +1,7 @@ import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { dirname, resolve } from "node:path"; import { pathToFileURL } from "node:url"; -import type { TelemetryAttributeDefinition, TelemetrySchemaDefinition } from "@earendil-works/diffex-telemetry"; +import type { TelemetryAttributeDefinition, TelemetrySchemaDefinition } from "@diffexai/diffex-telemetry"; import { AGENT_RUNTIME_TELEMETRY_SCHEMA, AI_TELEMETRY_SCHEMA, @@ -87,7 +87,7 @@ function renderSchema(schema: TelemetrySchemaDefinition, title: string): string[ export function renderAgentTelemetrySchemaMarkdown(): string { const lines = [ - "# Pi Agent Telemetry Schemas", + "# Diffex Agent Telemetry Schemas", "", "", "", diff --git a/packages/agent/src/agent-loop.ts b/packages/agent/src/agent-loop.ts index 5d068d275..241644b6d 100644 --- a/packages/agent/src/agent-loop.ts +++ b/packages/agent/src/agent-loop.ts @@ -10,8 +10,8 @@ import { type ToolResultMessage, uuidv7, validateToolArguments, -} from "@earendil-works/diffex-ai"; -import { NOOP_TELEMETRY_CONTEXT } from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-ai"; +import { NOOP_TELEMETRY_CONTEXT } from "@diffexai/diffex-telemetry"; import { type AgentRuntimeTelemetrySpan, type AiTelemetrySpan, diff --git a/packages/agent/src/agent.ts b/packages/agent/src/agent.ts index 2db2e4b41..7fef20abb 100644 --- a/packages/agent/src/agent.ts +++ b/packages/agent/src/agent.ts @@ -6,8 +6,8 @@ import type { TextContent, ThinkingBudgets, Transport, -} from "@earendil-works/diffex-ai"; -import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-ai"; +import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@diffexai/diffex-telemetry"; import { runAgentLoop, runAgentLoopContinue } from "./agent-loop.ts"; import { getDefaultStreamFn } from "./stream-fn.ts"; import type { diff --git a/packages/agent/src/harness/agent-harness.ts b/packages/agent/src/harness/agent-harness.ts index 3e6d1cc34..b406a7536 100644 --- a/packages/agent/src/harness/agent-harness.ts +++ b/packages/agent/src/harness/agent-harness.ts @@ -9,7 +9,7 @@ import type { RetryPolicy, SimpleStreamOptions, Usage, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import type { AgentMessage, AgentTool, QueueMode, ThinkingLevel } from "../types.ts"; import type { CompactionSettings } from "./compaction/compaction.ts"; import { type Result as ResultValue, TaggedError } from "./result.ts"; diff --git a/packages/agent/src/harness/compaction/branch-summarization.ts b/packages/agent/src/harness/compaction/branch-summarization.ts index c9d253829..2d6b32771 100644 --- a/packages/agent/src/harness/compaction/branch-summarization.ts +++ b/packages/agent/src/harness/compaction/branch-summarization.ts @@ -6,7 +6,7 @@ import { type RetryCallbacks, type RetryPolicy, type Usage, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import type { AgentMessage } from "../../types.ts"; import { convertToLlm, createBranchSummaryMessage, createCompactionSummaryMessage } from "../messages.ts"; diff --git a/packages/agent/src/harness/compaction/compaction.ts b/packages/agent/src/harness/compaction/compaction.ts index 98b40c4c1..9c9e0222b 100644 --- a/packages/agent/src/harness/compaction/compaction.ts +++ b/packages/agent/src/harness/compaction/compaction.ts @@ -11,7 +11,7 @@ import { type SimpleStreamOptions, type Usage, uuidv7, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import type { AgentMessage, ThinkingLevel } from "../../types.ts"; import { convertToLlm, createBranchSummaryMessage, createCompactionSummaryMessage } from "../messages.ts"; import { buildSessionContext } from "../session/context.ts"; diff --git a/packages/agent/src/harness/compaction/utils.ts b/packages/agent/src/harness/compaction/utils.ts index e67bf9361..098ef903c 100644 --- a/packages/agent/src/harness/compaction/utils.ts +++ b/packages/agent/src/harness/compaction/utils.ts @@ -1,4 +1,4 @@ -import { contentText, type Message } from "@earendil-works/diffex-ai"; +import { contentText, type Message } from "@diffexai/diffex-ai"; import type { AgentMessage } from "../../types.ts"; /** File paths touched by a session branch or compaction range. */ diff --git a/packages/agent/src/harness/messages.ts b/packages/agent/src/harness/messages.ts index bcd1d5355..09ad23a32 100644 --- a/packages/agent/src/harness/messages.ts +++ b/packages/agent/src/harness/messages.ts @@ -1,4 +1,4 @@ -import type { ImageContent, Message, TextContent } from "@earendil-works/diffex-ai"; +import type { ImageContent, Message, TextContent } from "@diffexai/diffex-ai"; import type { AgentMessage } from "../types.ts"; export const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary: diff --git a/packages/agent/src/harness/reducer.ts b/packages/agent/src/harness/reducer.ts index 0e3d179b8..c2228f648 100644 --- a/packages/agent/src/harness/reducer.ts +++ b/packages/agent/src/harness/reducer.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage, DeferredHandle, StopReason } from "@earendil-works/diffex-ai"; +import type { AssistantMessage, DeferredHandle, StopReason } from "@diffexai/diffex-ai"; import { Guard } from "typebox/guard"; import type { AgentMessage, AgentToolCall, ThinkingLevel } from "../types.ts"; import type { diff --git a/packages/agent/src/harness/session/jsonl/repo.ts b/packages/agent/src/harness/session/jsonl/repo.ts index 540427856..4455cc2b6 100644 --- a/packages/agent/src/harness/session/jsonl/repo.ts +++ b/packages/agent/src/harness/session/jsonl/repo.ts @@ -1,4 +1,4 @@ -import { uuidv7 } from "@earendil-works/diffex-ai"; +import { uuidv7 } from "@diffexai/diffex-ai"; import { assertJsonSerializable, Session } from "../session.ts"; import { type ForkOptions, SessionError, type SessionRepo } from "../types.ts"; import { metadataFromHeader, parseHeader } from "./codec.ts"; diff --git a/packages/agent/src/harness/session/memory.ts b/packages/agent/src/harness/session/memory.ts index 3f87cdefe..974a7a0c4 100644 --- a/packages/agent/src/harness/session/memory.ts +++ b/packages/agent/src/harness/session/memory.ts @@ -1,4 +1,4 @@ -import { uuidv7 } from "@earendil-works/diffex-ai"; +import { uuidv7 } from "@diffexai/diffex-ai"; import { Session } from "./session.ts"; import { SessionState } from "./state.ts"; import { diff --git a/packages/agent/src/harness/session/session.ts b/packages/agent/src/harness/session/session.ts index 10aed37f3..67bc484ed 100644 --- a/packages/agent/src/harness/session/session.ts +++ b/packages/agent/src/harness/session/session.ts @@ -1,4 +1,4 @@ -import { uuidv7 } from "@earendil-works/diffex-ai"; +import { uuidv7 } from "@diffexai/diffex-ai"; import type { AgentMessage } from "../../types.ts"; import type { BranchBounds, diff --git a/packages/agent/src/harness/session/types.ts b/packages/agent/src/harness/session/types.ts index 28e1b8c7d..73810de3f 100644 --- a/packages/agent/src/harness/session/types.ts +++ b/packages/agent/src/harness/session/types.ts @@ -1,4 +1,4 @@ -import type { StopReason, Usage } from "@earendil-works/diffex-ai"; +import type { StopReason, Usage } from "@diffexai/diffex-ai"; import "../messages.ts"; import type { AgentMessage } from "../../types.ts"; import type { Session } from "./session.ts"; diff --git a/packages/agent/src/harness/telemetry.ts b/packages/agent/src/harness/telemetry.ts index 692fb4225..73d08db55 100644 --- a/packages/agent/src/harness/telemetry.ts +++ b/packages/agent/src/harness/telemetry.ts @@ -10,7 +10,7 @@ import type { TelemetrySchemaSpanStartAttributes, TelemetrySchemaSpanUnion, TelemetrySpan, -} from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-telemetry"; export type { AttributeValue, @@ -37,7 +37,7 @@ export type { TelemetrySpanDefinition, TelemetryStartAttributeDefinition, TypedSpanStarter, -} from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-telemetry"; export const AI_TELEMETRY_SCHEMA = { version: 1, diff --git a/packages/agent/src/harness/tools/read.ts b/packages/agent/src/harness/tools/read.ts index d44c3f4f6..15247d98d 100644 --- a/packages/agent/src/harness/tools/read.ts +++ b/packages/agent/src/harness/tools/read.ts @@ -1,4 +1,4 @@ -import type { ImageContent, TextContent } from "@earendil-works/diffex-ai"; +import type { ImageContent, TextContent } from "@diffexai/diffex-ai"; import { type Static, Type } from "typebox"; import type { AgentHarnessTool } from "../types.ts"; import { getOrThrow } from "../types.ts"; diff --git a/packages/agent/src/harness/types.ts b/packages/agent/src/harness/types.ts index 9a3ad92da..3ad1ec36f 100644 --- a/packages/agent/src/harness/types.ts +++ b/packages/agent/src/harness/types.ts @@ -1,4 +1,4 @@ -import type { SimpleStreamOptions, Transport } from "@earendil-works/diffex-ai"; +import type { SimpleStreamOptions, Transport } from "@diffexai/diffex-ai"; import type { Static, TSchema } from "typebox"; import type { AgentTool, AgentToolResult, AgentToolUpdateCallback } from "../types.ts"; diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts index 53b409e03..f04ea6d55 100644 --- a/packages/agent/src/index.ts +++ b/packages/agent/src/index.ts @@ -1,6 +1,6 @@ // Core Agent -export { uuidv7 } from "@earendil-works/diffex-ai"; +export { uuidv7 } from "@diffexai/diffex-ai"; export type { AttributeValue, ExactTelemetryAttributes, @@ -33,13 +33,13 @@ export type { TelemetrySpanDefinition, TelemetryStartAttributeDefinition, TypedSpanStarter, -} from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-telemetry"; export { createTypedSpanStarter, defineTelemetrySchema, InMemoryTelemetryContext, NOOP_TELEMETRY_CONTEXT, -} from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-telemetry"; export * from "./agent.ts"; // Loop functions export * from "./agent-loop.ts"; diff --git a/packages/agent/src/proxy.ts b/packages/agent/src/proxy.ts index 91887bbd5..abbb6c6cf 100644 --- a/packages/agent/src/proxy.ts +++ b/packages/agent/src/proxy.ts @@ -14,7 +14,7 @@ import { type SimpleStreamOptions, type StopReason, type ToolCall, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; // Create stream class matching ProxyMessageEventStream class ProxyMessageEventStream extends EventStream { diff --git a/packages/agent/src/types.ts b/packages/agent/src/types.ts index 578b57506..07fb4c5cc 100644 --- a/packages/agent/src/types.ts +++ b/packages/agent/src/types.ts @@ -12,8 +12,8 @@ import type { Tool, ToolResultMessage, Usage, -} from "@earendil-works/diffex-ai"; -import type { TelemetryContext } from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-ai"; +import type { TelemetryContext } from "@diffexai/diffex-telemetry"; import type { Static, TSchema } from "typebox"; /** @@ -316,7 +316,7 @@ export interface AgentLoopConfig extends SimpleStreamOptions { /** * Thinking/reasoning level for models that support it. * Note: "xhigh" and "max" are only supported by selected model families. Use model - * thinking-level metadata from @earendil-works/diffex-ai to detect support for a concrete model. + * thinking-level metadata from @diffexai/diffex-ai to detect support for a concrete model. */ export type ThinkingLevel = "off" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max"; diff --git a/packages/agent/test/agent-loop.test.ts b/packages/agent/test/agent-loop.test.ts index cfff201b7..264b90eb6 100644 --- a/packages/agent/test/agent-loop.test.ts +++ b/packages/agent/test/agent-loop.test.ts @@ -5,7 +5,7 @@ import { type Message, type Model, type UserMessage, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { agentLoop, agentLoopContinue } from "../src/agent-loop.ts"; diff --git a/packages/agent/test/agent.test.ts b/packages/agent/test/agent.test.ts index d8c9a522a..fa923370b 100644 --- a/packages/agent/test/agent.test.ts +++ b/packages/agent/test/agent.test.ts @@ -1,9 +1,4 @@ -import { - type AssistantMessage, - type AssistantMessageEvent, - EventStream, - getModel, -} from "@earendil-works/diffex-ai/compat"; +import { type AssistantMessage, type AssistantMessageEvent, EventStream, getModel } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { diff --git a/packages/agent/test/e2e.test.ts b/packages/agent/test/e2e.test.ts index 3e8128f77..fe89b227b 100644 --- a/packages/agent/test/e2e.test.ts +++ b/packages/agent/test/e2e.test.ts @@ -10,7 +10,7 @@ import { streamSimple, type ToolResultMessage, type UserMessage, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it } from "vitest"; import { Agent, type AgentEvent } from "../src/index.ts"; import { calculateTool } from "./utils/calculate.ts"; diff --git a/packages/agent/test/harness/agent-harness-scaffold.test.ts b/packages/agent/test/harness/agent-harness-scaffold.test.ts index f0531f331..c6e3412da 100644 --- a/packages/agent/test/harness/agent-harness-scaffold.test.ts +++ b/packages/agent/test/harness/agent-harness-scaffold.test.ts @@ -1,5 +1,5 @@ -import { createModels, type Usage } from "@earendil-works/diffex-ai"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import { createModels, type Usage } from "@diffexai/diffex-ai"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { describe, expect, it } from "vitest"; import { AgentHarness, diff --git a/packages/agent/test/harness/branch-summarization.test.ts b/packages/agent/test/harness/branch-summarization.test.ts index 54ac4142b..d924e4826 100644 --- a/packages/agent/test/harness/branch-summarization.test.ts +++ b/packages/agent/test/harness/branch-summarization.test.ts @@ -1,4 +1,4 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; import { describe, expect, it } from "vitest"; import { collectEntriesForBranchSummary } from "../../src/harness/compaction/branch-summarization.ts"; import { InMemorySessionStorage, Session } from "../../src/harness/session/index.ts"; diff --git a/packages/agent/test/harness/compaction.test.ts b/packages/agent/test/harness/compaction.test.ts index cf7076659..f2302bf29 100644 --- a/packages/agent/test/harness/compaction.test.ts +++ b/packages/agent/test/harness/compaction.test.ts @@ -9,7 +9,7 @@ import { type Model, type Models, type Usage, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { beforeEach, describe, expect, it } from "vitest"; import { type CompactionPreparation, diff --git a/packages/agent/test/harness/reducer.test.ts b/packages/agent/test/harness/reducer.test.ts index e79e8ffcc..972f6650f 100644 --- a/packages/agent/test/harness/reducer.test.ts +++ b/packages/agent/test/harness/reducer.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage, ToolResultMessage, Usage, UserMessage } from "@earendil-works/diffex-ai"; +import type { AssistantMessage, ToolResultMessage, Usage, UserMessage } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { type EffectiveLaneConfiguration, diff --git a/packages/agent/test/harness/session/context.test.ts b/packages/agent/test/harness/session/context.test.ts index d7f34b4b3..1e8482677 100644 --- a/packages/agent/test/harness/session/context.test.ts +++ b/packages/agent/test/harness/session/context.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage } from "@earendil-works/diffex-ai"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { buildSessionContext } from "../../../src/harness/session/context.ts"; import type { Entry } from "../../../src/harness/session/types.ts"; diff --git a/packages/agent/test/harness/session/jsonl-storage.test.ts b/packages/agent/test/harness/session/jsonl-storage.test.ts index 75d551a60..7a3f90f90 100644 --- a/packages/agent/test/harness/session/jsonl-storage.test.ts +++ b/packages/agent/test/harness/session/jsonl-storage.test.ts @@ -1,7 +1,7 @@ import { mkdtempSync, readFileSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { Usage } from "@earendil-works/diffex-ai"; +import type { Usage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { NodeExecutionEnv } from "../../../src/harness/env/nodejs.ts"; import type { diff --git a/packages/agent/test/harness/telemetry.test.ts b/packages/agent/test/harness/telemetry.test.ts index affee1402..df7d2c26d 100644 --- a/packages/agent/test/harness/telemetry.test.ts +++ b/packages/agent/test/harness/telemetry.test.ts @@ -1,10 +1,6 @@ import { readFileSync } from "node:fs"; import { resolve } from "node:path"; -import { - createTypedSpanStarter, - NOOP_TELEMETRY_CONTEXT, - type TelemetryContext, -} from "@earendil-works/diffex-telemetry"; +import { createTypedSpanStarter, NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@diffexai/diffex-telemetry"; import { describe, expect, expectTypeOf, it } from "vitest"; import { renderAgentTelemetrySchemaMarkdown } from "../../scripts/generate-telemetry-docs.ts"; import { diff --git a/packages/agent/test/utils/calculate.ts b/packages/agent/test/utils/calculate.ts index 058fb587d..014849944 100644 --- a/packages/agent/test/utils/calculate.ts +++ b/packages/agent/test/utils/calculate.ts @@ -1,4 +1,4 @@ -import type { Usage } from "@earendil-works/diffex-ai"; +import type { Usage } from "@diffexai/diffex-ai"; import { type Static, Type } from "typebox"; import type { AgentTool, AgentToolResult } from "../../src/types.ts"; diff --git a/packages/agent/tsconfig.build.json b/packages/agent/tsconfig.build.json index 78d6fed64..76aef8817 100644 --- a/packages/agent/tsconfig.build.json +++ b/packages/agent/tsconfig.build.json @@ -3,9 +3,9 @@ "compilerOptions": { "outDir": "./dist", "paths": { - "@earendil-works/diffex-telemetry": ["../telemetry/dist/index.d.ts"], - "@earendil-works/diffex-ai": ["../ai/dist/index.d.ts"], - "@earendil-works/diffex-ai/*": ["../ai/dist/*.d.ts", "../ai/dist/providers/*.d.ts"] + "@diffexai/diffex-telemetry": ["../telemetry/dist/index.d.ts"], + "@diffexai/diffex-ai": ["../ai/dist/index.d.ts"], + "@diffexai/diffex-ai/*": ["../ai/dist/*.d.ts", "../ai/dist/providers/*.d.ts"] }, "rootDir": "./src" }, diff --git a/packages/agent/vitest.config.ts b/packages/agent/vitest.config.ts index 70996910c..e498f1eec 100644 --- a/packages/agent/vitest.config.ts +++ b/packages/agent/vitest.config.ts @@ -16,10 +16,10 @@ export default defineConfig({ }, resolve: { alias: [ - { find: /^@earendil-works\/diffex-telemetry$/, replacement: telemetrySrcIndex }, - { find: /^@earendil-works\/diffex-agent-core$/, replacement: agentSrcIndex }, - { find: /^@earendil-works\/diffex-ai$/, replacement: aiSrcIndex }, - { find: /^@earendil-works\/diffex-ai\/compat$/, replacement: aiSrcCompat }, + { find: /^@diffexai\/diffex-telemetry$/, replacement: telemetrySrcIndex }, + { find: /^@diffexai\/diffex-agent-core$/, replacement: agentSrcIndex }, + { find: /^@diffexai\/diffex-ai$/, replacement: aiSrcIndex }, + { find: /^@diffexai\/diffex-ai\/compat$/, replacement: aiSrcCompat }, ], }, }); diff --git a/packages/agent/vitest.harness.config.ts b/packages/agent/vitest.harness.config.ts index b97ecdcf0..63746c1b6 100644 --- a/packages/agent/vitest.harness.config.ts +++ b/packages/agent/vitest.harness.config.ts @@ -23,10 +23,10 @@ export default defineConfig({ }, resolve: { alias: [ - { find: /^@earendil-works\/diffex-telemetry$/, replacement: telemetrySrcIndex }, - { find: /^@earendil-works\/diffex-agent-core$/, replacement: agentSrcIndex }, - { find: /^@earendil-works\/diffex-ai$/, replacement: aiSrcIndex }, - { find: /^@earendil-works\/diffex-ai\/compat$/, replacement: aiSrcCompat }, + { find: /^@diffexai\/diffex-telemetry$/, replacement: telemetrySrcIndex }, + { find: /^@diffexai\/diffex-agent-core$/, replacement: agentSrcIndex }, + { find: /^@diffexai\/diffex-ai$/, replacement: aiSrcIndex }, + { find: /^@diffexai\/diffex-ai\/compat$/, replacement: aiSrcCompat }, ], }, }); diff --git a/packages/ai/README.md b/packages/ai/README.md index 7af25b28b..74f971e3a 100644 --- a/packages/ai/README.md +++ b/packages/ai/README.md @@ -1,4 +1,4 @@ -# @earendil-works/diffex-ai +# @diffexai/diffex-ai Unified LLM API with provider collections, automatic auth resolution, token and cost tracking, and simple context persistence and hand-off to other models mid-session. @@ -92,18 +92,18 @@ Unified LLM API with provider collections, automatic auth resolution, token and ## Installation ```bash -npm install @earendil-works/diffex-ai +npm install @diffexai/diffex-ai ``` -TypeBox exports are re-exported from `@earendil-works/diffex-ai`: `Type`, `Static`, and `TSchema`. +TypeBox exports are re-exported from `@diffexai/diffex-ai`: `Type`, `Static`, and `TSchema`. ## Quick Start You build a `Models` collection of providers and stream through it. The quickest start registers every built-in provider; apps that care about bundle size register individual providers instead (see [Provider Factories](#provider-factories) and [Bundling and Tree Shaking](#bundling-and-tree-shaking)). ```typescript -import { Type, type Context, type Tool } from '@earendil-works/diffex-ai'; -import { builtinModels } from '@earendil-works/diffex-ai/providers/all'; +import { Type, type Context, type Tool } from '@diffexai/diffex-ai'; +import { builtinModels } from '@diffexai/diffex-ai/providers/all'; // A Models collection with every built-in provider registered const models = builtinModels(); @@ -238,10 +238,10 @@ Providers internally share **API implementations** (the wire protocols): Anthrop For apps that only need specific providers, there is one factory per built-in provider, each a subpath import that pulls only that provider's catalog: ```typescript -import { anthropicProvider } from '@earendil-works/diffex-ai/providers/anthropic'; -import { openaiProvider } from '@earendil-works/diffex-ai/providers/openai'; -import { openrouterProvider } from '@earendil-works/diffex-ai/providers/openrouter'; -import { amazonBedrockProvider } from '@earendil-works/diffex-ai/providers/amazon-bedrock'; +import { anthropicProvider } from '@diffexai/diffex-ai/providers/anthropic'; +import { openaiProvider } from '@diffexai/diffex-ai/providers/openai'; +import { openrouterProvider } from '@diffexai/diffex-ai/providers/openrouter'; +import { amazonBedrockProvider } from '@diffexai/diffex-ai/providers/amazon-bedrock'; // ...one module per provider in the Supported Providers list const models = createModels(); @@ -256,7 +256,7 @@ Provider factories import their model catalog and a lazy API wrapper. They do no For apps that want everything (as in Quick Start): ```typescript -import { builtinModels } from '@earendil-works/diffex-ai/providers/all'; +import { builtinModels } from '@diffexai/diffex-ai/providers/all'; const models = builtinModels(); // a Models collection with every built-in provider registered ``` @@ -287,7 +287,7 @@ for (const m of anthropicModels) { Dynamically listed models are typed `Model`. Narrow with the `hasApi()` guard when you need API-specific option typing: ```typescript -import { hasApi } from '@earendil-works/diffex-ai'; +import { hasApi } from '@diffexai/diffex-ai'; const m = models.getModel('anthropic', 'claude-sonnet-4-5'); if (m && hasApi(m, 'anthropic-messages')) { @@ -301,7 +301,7 @@ if (m && hasApi(m, 'anthropic-messages')) { For tooling that wants the generated built-in catalog with full literal typing (provider and model IDs auto-complete), independent of any collection: ```typescript -import { getBuiltinModel, getBuiltinModels, getBuiltinProviders } from '@earendil-works/diffex-ai/providers/all'; +import { getBuiltinModel, getBuiltinModels, getBuiltinProviders } from '@diffexai/diffex-ai/providers/all'; const model = getBuiltinModel('openai', 'gpt-4o-mini'); // typed Model<'openai-responses'> const providers = getBuiltinProviders(); @@ -384,7 +384,7 @@ Header names are merged case-insensitively. Explicit headers override auth/model Stored credentials (API keys entered interactively, OAuth tokens) live in a `CredentialStore` — one type-tagged credential per provider. diffex-ai ships an in-memory default; apps inject persistent storage: ```typescript -import { createModels, type CredentialStore } from '@earendil-works/diffex-ai'; +import { createModels, type CredentialStore } from '@diffexai/diffex-ai'; const models = createModels({ credentials: myFileBackedStore }); // builtinModels() takes the same options: @@ -462,7 +462,7 @@ Tools enable LLMs to interact with external systems. This library uses TypeBox s ### Defining Tools ```typescript -import { Type, type Tool, StringEnum } from '@earendil-works/diffex-ai'; +import { Type, type Tool, StringEnum } from '@diffexai/diffex-ai'; // Define tool parameters with TypeBox const weatherTool: Tool = { @@ -620,7 +620,7 @@ for await (const event of s) { When implementing your own tool execution loop, use `validateToolCall` to validate arguments before passing them to your tools: ```typescript -import { validateToolCall, type Tool } from '@earendil-works/diffex-ai'; +import { validateToolCall, type Tool } from '@diffexai/diffex-ai'; const tools: Tool[] = [weatherTool, calculatorTool]; const s = models.stream(model, { messages, tools }); @@ -713,7 +713,7 @@ Image generation uses a separate API surface from text/chat generation, mirrorin ### Basic Image Generation ```typescript -import { builtinImagesModels } from '@earendil-works/diffex-ai/providers/all'; +import { builtinImagesModels } from '@diffexai/diffex-ai/providers/all'; // Every built-in image-generation provider; accepts the same options as createModels() const imagesModels = builtinImagesModels(); @@ -735,12 +735,12 @@ for (const block of result.output) { } ``` -Like the chat side, you can build the collection from parts: `createImagesModels({ credentials?, authContext? })`, the `openrouterImagesProvider()` factory from `@earendil-works/diffex-ai/providers/openrouter-images`, and `createImagesProvider({ id, auth, models, refreshModels?, api })` for custom image providers (with `imagesModels.refresh(provider?)` for dynamic lists). Failures never reject — they return an `AssistantImages` with `stopReason: "error"`. The collection's provider-scoped `getAuth(providerId)` works exactly like the chat-side one. +Like the chat side, you can build the collection from parts: `createImagesModels({ credentials?, authContext? })`, the `openrouterImagesProvider()` factory from `@diffexai/diffex-ai/providers/openrouter-images`, and `createImagesProvider({ id, auth, models, refreshModels?, api })` for custom image providers (with `imagesModels.refresh(provider?)` for dynamic lists). Failures never reject — they return an `AssistantImages` with `stopReason: "error"`. The collection's provider-scoped `getAuth(providerId)` works exactly like the chat-side one. The old global API (`getImageModel()` / `getImageModels()` / `getImageProviders()` / `generateImages()`) remains available on the [compat entrypoint](#migrating-from-the-old-global-api): ```typescript -import { getImageModel, generateImages } from '@earendil-works/diffex-ai/compat'; +import { getImageModel, generateImages } from '@diffexai/diffex-ai/compat'; const model = getImageModel('openrouter', 'google/gemini-2.5-flash-image'); const result = await generateImages(model, { @@ -825,7 +825,7 @@ for (const block of response.content) { `models.stream()`/`complete()` accept the owning API's full option set. Use `hasApi()` to narrow a dynamically looked-up model to its API for full option typing: ```typescript -import { hasApi } from '@earendil-works/diffex-ai'; +import { hasApi } from '@diffexai/diffex-ai'; // OpenAI Reasoning (o1, o3, gpt-5) const openaiModel = models.getModel('openai', 'gpt-5-mini')!; @@ -998,8 +998,8 @@ The callback is supported by `stream`, `complete`, `streamSimple`, and `complete `createProvider()` builds a provider from parts: identity, auth, a model list, and an API implementation. Use it for local inference servers, proxies, or any OpenAI/Anthropic-compatible endpoint: ```typescript -import { createModels, createProvider, envApiKeyAuth, type Model } from '@earendil-works/diffex-ai'; -import { openAICompletionsApi } from '@earendil-works/diffex-ai/api/openai-completions.lazy'; +import { createModels, createProvider, envApiKeyAuth, type Model } from '@diffexai/diffex-ai'; +import { openAICompletionsApi } from '@diffexai/diffex-ai/api/openai-completions.lazy'; const ollamaModel: Model<'openai-completions'> = { id: 'llama-3.1-8b', @@ -1044,8 +1044,8 @@ const proxy = createProvider({ Mixed-API providers pass a map keyed by `model.api`; each model dispatches to its API's implementation: ```typescript -import { anthropicMessagesApi } from '@earendil-works/diffex-ai/api/anthropic-messages.lazy'; -import { openAIResponsesApi } from '@earendil-works/diffex-ai/api/openai-responses.lazy'; +import { anthropicMessagesApi } from '@diffexai/diffex-ai/api/anthropic-messages.lazy'; +import { openAIResponsesApi } from '@diffexai/diffex-ai/api/openai-responses.lazy'; const gateway = createProvider({ id: 'my-gateway', @@ -1138,7 +1138,7 @@ const ollamaReasoningModel: Model<'openai-completions'> = { The API implementations are importable on their own. Each module exports exactly `stream` and `streamSimple` with that API's full option typing. Direct calls bypass provider auth — pass `apiKey` explicitly: ```typescript -import { stream } from '@earendil-works/diffex-ai/api/anthropic-messages'; +import { stream } from '@diffexai/diffex-ai/api/anthropic-messages'; const s = stream(claudeModel, context, { apiKey: process.env.ANTHROPIC_API_KEY, @@ -1161,7 +1161,7 @@ Built-in API implementations live under `./api/`: | `mistral-conversations` | `MistralOptions` | | `bedrock-converse-stream` | `BedrockOptions` | -Importing an implementation module loads its SDK. The `./api/.lazy` wrappers (used by the provider factories) defer that load to the first request when the runtime or bundler supports dynamic import chunking. Legacy raw API subpaths from older releases (`./anthropic`, `./google`, `./mistral`, `./openai-completions`, ...) were removed; use `@earendil-works/diffex-ai/api/`. +Importing an implementation module loads its SDK. The `./api/.lazy` wrappers (used by the provider factories) defer that load to the first request when the runtime or bundler supports dynamic import chunking. Legacy raw API subpaths from older releases (`./anthropic`, `./google`, `./mistral`, `./openai-completions`, ...) were removed; use `@diffexai/diffex-ai/api/`. ### OpenAI Compatibility Settings @@ -1217,7 +1217,7 @@ import { fauxText, fauxThinking, fauxToolCall, -} from '@earendil-works/diffex-ai'; +} from '@diffexai/diffex-ai'; const faux = fauxProvider({ tokensPerSecond: 50 // optional @@ -1304,10 +1304,10 @@ When messages from one provider are sent to a different provider, the library au - **Tool calls and regular text** are preserved unchanged ```typescript -import { createModels, type Context } from '@earendil-works/diffex-ai'; -import { anthropicProvider } from '@earendil-works/diffex-ai/providers/anthropic'; -import { openaiProvider } from '@earendil-works/diffex-ai/providers/openai'; -import { googleProvider } from '@earendil-works/diffex-ai/providers/google'; +import { createModels, type Context } from '@diffexai/diffex-ai'; +import { anthropicProvider } from '@diffexai/diffex-ai/providers/anthropic'; +import { openaiProvider } from '@diffexai/diffex-ai/providers/openai'; +import { googleProvider } from '@diffexai/diffex-ai/providers/google'; const models = createModels(); models.setProvider(anthropicProvider()); @@ -1374,8 +1374,8 @@ Models are plain serializable data too — no functions or implementations attac The library supports browser environments. The core entrypoint and provider factories are side-effect free and bundle cleanly. Environment variables are not available in browsers, so pass API keys explicitly — or inject a `CredentialStore` (e.g. localStorage-backed) and let provider auth resolve from stored credentials: ```typescript -import { createModels } from '@earendil-works/diffex-ai'; -import { anthropicProvider } from '@earendil-works/diffex-ai/providers/anthropic'; +import { createModels } from '@diffexai/diffex-ai'; +import { anthropicProvider } from '@diffexai/diffex-ai/providers/anthropic'; const models = createModels(); models.setProvider(anthropicProvider()); @@ -1401,8 +1401,8 @@ Browser compatibility notes: For small bundles, import only the providers you need: ```typescript -import { createModels } from '@earendil-works/diffex-ai'; -import { openaiProvider } from '@earendil-works/diffex-ai/providers/openai'; +import { createModels } from '@diffexai/diffex-ai'; +import { openaiProvider } from '@diffexai/diffex-ai/providers/openai'; const models = createModels(); models.setProvider(openaiProvider()); @@ -1410,14 +1410,14 @@ models.setProvider(openaiProvider()); Rules: -- `@earendil-works/diffex-ai` is the core entrypoint and does not import built-in catalogs, provider factories, or SDK implementations. -- `@earendil-works/diffex-ai/providers/` imports that provider's catalog and lazy API wrapper only. -- `@earendil-works/diffex-ai/providers/all` imports every built-in provider factory and all catalogs. Use it only when you want the full built-in set. +- `@diffexai/diffex-ai` is the core entrypoint and does not import built-in catalogs, provider factories, or SDK implementations. +- `@diffexai/diffex-ai/providers/` imports that provider's catalog and lazy API wrapper only. +- `@diffexai/diffex-ai/providers/all` imports every built-in provider factory and all catalogs. Use it only when you want the full built-in set. - With code splitting, provider SDKs stay in lazy chunks and load on first request. - Without code splitting, bundlers fold reachable lazy API implementations into the single bundle. A single-provider bundle then includes that provider's SDK; `providers/all` includes all statically visible SDKs. Bedrock is the exception: its AWS SDK implementation is loaded through a bundler-opaque Node-only import. -- Importing `@earendil-works/diffex-ai/api/` directly loads that API implementation and its SDK immediately. +- Importing `@diffexai/diffex-ai/api/` directly loads that API implementation and its SDK immediately. -Avoid `@earendil-works/diffex-ai/compat` in new bundled apps; it preserves the old global API and imports the full built-in catalog surface. +Avoid `@diffexai/diffex-ai/compat` in new bundled apps; it preserves the old global API and imports the full built-in catalog surface. For single-file Node ESM bundles, some SDK dependencies may still use dynamic CommonJS `require()` internally. If you see errors such as `Dynamic require of "child_process" is not supported`, add a Node `require` shim to the bundle. With esbuild: @@ -1432,8 +1432,8 @@ This is only for Node bundles; it is not a browser or Cloudflare Workers workaro Bedrock is Node-only. Add it like any other provider: ```typescript -import { createModels } from '@earendil-works/diffex-ai'; -import { amazonBedrockProvider } from '@earendil-works/diffex-ai/providers/amazon-bedrock'; +import { createModels } from '@diffexai/diffex-ai'; +import { amazonBedrockProvider } from '@diffexai/diffex-ai/providers/amazon-bedrock'; const models = createModels(); models.setProvider(amazonBedrockProvider()); @@ -1442,8 +1442,8 @@ models.setProvider(amazonBedrockProvider()); In normal Node package usage and code-split bundles, Bedrock loads its AWS SDK implementation lazily. For a standalone single-file bundle that must include Bedrock support, register the implementation module explicitly: ```typescript -import { setBedrockProviderModule } from '@earendil-works/diffex-ai/api/bedrock-converse-stream.lazy'; -import { bedrockProviderModule } from '@earendil-works/diffex-ai/bedrock-provider'; +import { setBedrockProviderModule } from '@diffexai/diffex-ai/api/bedrock-converse-stream.lazy'; +import { bedrockProviderModule } from '@diffexai/diffex-ai/bedrock-provider'; setBedrockProviderModule(bedrockProviderModule); ``` @@ -1481,8 +1481,8 @@ Several providers support OAuth authentication instead of static API keys: Each of these providers carries an `OAuthAuth` on `provider.auth.oauth` with three operations: `login(interaction)` uses the provider-neutral `AuthInteraction.prompt()`/`notify()` protocol and returns a credential, `refresh(credential, signal)` refreshes expiring credentials when applicable, and `toAuth(credential)` derives request auth (GitHub Copilot's per-account base URL comes from here). Provider login interactions and refresh calls always carry a concrete abort signal. Refresh is automatic: `models.getAuth(providerId)` and request paths refresh expired tokens under a credential-store lock, so concurrent requests and processes cannot double-refresh. OpenRouter's OAuth flow instead returns a permanent API key, so its refresh operation is a no-op. ```typescript -import { createModels } from '@earendil-works/diffex-ai'; -import { anthropicProvider } from '@earendil-works/diffex-ai/providers/anthropic'; +import { createModels } from '@diffexai/diffex-ai'; +import { anthropicProvider } from '@diffexai/diffex-ai/providers/anthropic'; const models = createModels({ credentials: myStore }); // persistent CredentialStore models.setProvider(anthropicProvider()); @@ -1541,16 +1541,16 @@ Official docs: [Application Default Credentials](https://cloud.google.com/docs/a The quickest way to authenticate: ```bash -npx @earendil-works/diffex-ai login # interactive provider selection -npx @earendil-works/diffex-ai login anthropic # login to specific provider -npx @earendil-works/diffex-ai list # list available providers +npx @diffexai/diffex-ai login # interactive provider selection +npx @diffexai/diffex-ai login anthropic # login to specific provider +npx @diffexai/diffex-ai list # list available providers ``` Credentials are saved to `auth.json` in the current directory. ### Programmatic OAuth -Built-in login and refresh flows are private provider implementations. Use provider-owned `OAuthAuth`, which composes with `CredentialStore` and gets locked auto-refresh through `Models`. The `@earendil-works/diffex-ai/oauth` entry point retains only type declarations required by coding-agent extension OAuth compatibility. +Built-in login and refresh flows are private provider implementations. Use provider-owned `OAuthAuth`, which composes with `CredentialStore` and gets locked auto-refresh through `Models`. The `@diffexai/diffex-ai/oauth` entry point retains only type declarations required by coding-agent extension OAuth compatibility. Provider notes: @@ -1566,10 +1566,10 @@ Older versions exposed a global API: `stream()`/`complete()` dispatching on `mod ```typescript // Before -import { getModel, complete } from '@earendil-works/diffex-ai'; +import { getModel, complete } from '@diffexai/diffex-ai'; // After (verbatim behavior, one import-path change) -import { getModel, complete } from '@earendil-works/diffex-ai/compat'; +import { getModel, complete } from '@diffexai/diffex-ai/compat'; ``` Compat is a strict superset of the root entrypoint, so a file can switch its import path wholesale. It will be removed in a future release; migrate to `createModels()` + provider factories: @@ -1581,7 +1581,7 @@ Compat is a strict superset of the root entrypoint, so a file can switch its imp | `stream(model, ctx, opts)` (env-key injection) | `models.stream(model, ctx, opts)` (provider auth resolution) | | `registerApiProvider({ api, stream, streamSimple })` | `createProvider({ id, auth, models, api })` + `models.setProvider()` | | `getEnvApiKey('openai')` | `await models.getAuth(model.provider)` | -| `streamAnthropic(model, ctx, opts)` | `stream` from `@earendil-works/diffex-ai/api/anthropic-messages`, or a provider in a collection | +| `streamAnthropic(model, ctx, opts)` | `stream` from `@diffexai/diffex-ai/api/anthropic-messages`, or a provider in a collection | | `registerFauxProvider()` | `fauxProvider()` + `models.setProvider()` | ## Development @@ -1605,7 +1605,7 @@ Create a new API implementation file (for example `bedrock-converse-stream.ts`) - Tool conversion if the provider supports tools - Response parsing to emit standardized events (`text`, `tool_call`, `thinking`, `usage`, `stop`) -Add a lazy wrapper `src/api/.lazy.ts` (`Api()` via `lazyApi()`) so providers can reference the implementation without importing its SDK. Add any root-level `export type` re-exports in `src/index.ts` that should remain available from `@earendil-works/diffex-ai`. +Add a lazy wrapper `src/api/.lazy.ts` (`Api()` via `lazyApi()`) so providers can reference the implementation without importing its SDK. Add any root-level `export type` re-exports in `src/index.ts` that should remain available from `@diffexai/diffex-ai`. #### 3. Model Generation (`scripts/generate-models.ts`, `scripts/generate-image-models.ts`) diff --git a/packages/ai/package.json b/packages/ai/package.json index ea29e42f8..f0b0a74b3 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-ai", + "name": "@diffexai/diffex-ai", "version": "0.2.0", "description": "Unified LLM API with automatic model discovery and provider configuration", "type": "module", @@ -62,7 +62,7 @@ "dependencies": { "@anthropic-ai/sdk": "0.91.1", "@aws-sdk/client-bedrock-runtime": "3.1048.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "@google/genai": "1.52.0", "@mistralai/mistralai": "2.2.6", "@opentelemetry/api": "1.9.0", diff --git a/packages/ai/src/cli.ts b/packages/ai/src/cli.ts index 24f578655..23b0cc149 100644 --- a/packages/ai/src/cli.ts +++ b/packages/ai/src/cli.ts @@ -82,7 +82,7 @@ async function main(): Promise { if (!command || command === "help" || command === "--help" || command === "-h") { const providerList = PROVIDERS.map((provider) => ` ${provider.id.padEnd(20)} ${provider.name}`).join("\n"); console.log( - `Usage: npx @earendil-works/diffex-ai [provider]\n\nCommands:\n login [provider] Login to an OAuth provider\n list List available providers\n\nProviders:\n${providerList}`, + `Usage: npx @diffexai/diffex-ai [provider]\n\nCommands:\n login [provider] Login to an OAuth provider\n list List available providers\n\nProviders:\n${providerList}`, ); return; } diff --git a/packages/ai/src/compat.ts b/packages/ai/src/compat.ts index 1af6e2e29..d82260c12 100644 --- a/packages/ai/src/compat.ts +++ b/packages/ai/src/compat.ts @@ -4,8 +4,8 @@ * the api-registry, generated catalog reads (`getModel`/`getModels`/ * `getProviders`), per-API lazy stream wrappers, and image generation. * - * Existing apps switch imports from "@earendil-works/diffex-ai" to - * "@earendil-works/diffex-ai/compat" unchanged; new code uses `createModels()` + * Existing apps switch imports from "@diffexai/diffex-ai" to + * "@diffexai/diffex-ai/compat" unchanged; new code uses `createModels()` * and the provider factories. This module is deleted with the coding-agent * ModelManager migration. */ @@ -59,13 +59,13 @@ import type { StreamOptions, } from "./types.ts"; -/** @deprecated Static catalog read. Use `getBuiltinModel` from "@earendil-works/diffex-ai/providers/all" or `Models.getModel()`. */ +/** @deprecated Static catalog read. Use `getBuiltinModel` from "@diffexai/diffex-ai/providers/all" or `Models.getModel()`. */ export const getModel = getBuiltinModel; -/** @deprecated Static catalog read. Use `getBuiltinModels` from "@earendil-works/diffex-ai/providers/all" or `Models.getModels()`. */ +/** @deprecated Static catalog read. Use `getBuiltinModels` from "@diffexai/diffex-ai/providers/all" or `Models.getModels()`. */ export const getModels = getBuiltinModels; -/** @deprecated Static catalog read. Use `getBuiltinProviders` from "@earendil-works/diffex-ai/providers/all" or `Models.getProviders()`. */ +/** @deprecated Static catalog read. Use `getBuiltinProviders` from "@diffexai/diffex-ai/providers/all" or `Models.getProviders()`. */ export const getProviders = getBuiltinProviders; export type ApiStreamFunction = ( diff --git a/packages/ai/src/index.ts b/packages/ai/src/index.ts index 2d687028e..b15455080 100644 --- a/packages/ai/src/index.ts +++ b/packages/ai/src/index.ts @@ -3,9 +3,9 @@ export { Type } from "typebox"; // Core only, side-effect free: no generated catalogs, no provider factories, // no api-registry, no OAuth implementations, no compat. Provider factories -// live under "@earendil-works/diffex-ai/providers/*", API implementations under -// "@earendil-works/diffex-ai/api/*", the old global API under -// "@earendil-works/diffex-ai/compat". +// live under "@diffexai/diffex-ai/providers/*", API implementations under +// "@diffexai/diffex-ai/api/*", the old global API under +// "@diffexai/diffex-ai/compat". export type { AnthropicEffort, AnthropicOptions, AnthropicThinkingDisplay } from "./api/anthropic-messages.ts"; export type { AzureOpenAIResponsesOptions } from "./api/azure-openai-responses.ts"; export type { BedrockOptions, BedrockThinkingDisplay } from "./api/bedrock-converse-stream.ts"; diff --git a/packages/ai/src/legacy-api-aliases.ts b/packages/ai/src/legacy-api-aliases.ts index 07dadeaf7..908a4e6d2 100644 --- a/packages/ai/src/legacy-api-aliases.ts +++ b/packages/ai/src/legacy-api-aliases.ts @@ -25,83 +25,83 @@ const openAICodexResponsesStreams = openAICodexResponsesApi(); const openAICompletionsStreams = openAICompletionsApi(); const openAIResponsesStreams = openAIResponsesApi(); -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/anthropic-messages` or `anthropicMessagesApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/anthropic-messages` or `anthropicMessagesApi().stream`. */ export const streamAnthropic = anthropicMessagesStreams.stream as StreamFunction< "anthropic-messages", AnthropicOptions >; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/anthropic-messages` or `anthropicMessagesApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/anthropic-messages` or `anthropicMessagesApi().streamSimple`. */ export const streamSimpleAnthropic = anthropicMessagesStreams.streamSimple as StreamFunction< "anthropic-messages", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/azure-openai-responses` or `azureOpenAIResponsesApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/azure-openai-responses` or `azureOpenAIResponsesApi().stream`. */ export const streamAzureOpenAIResponses = azureOpenAIResponsesStreams.stream as StreamFunction< "azure-openai-responses", AzureOpenAIResponsesOptions >; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/azure-openai-responses` or `azureOpenAIResponsesApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/azure-openai-responses` or `azureOpenAIResponsesApi().streamSimple`. */ export const streamSimpleAzureOpenAIResponses = azureOpenAIResponsesStreams.streamSimple as StreamFunction< "azure-openai-responses", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/google-generative-ai` or `googleGenerativeAIApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/google-generative-ai` or `googleGenerativeAIApi().stream`. */ export const streamGoogle = googleGenerativeAIStreams.stream as StreamFunction<"google-generative-ai", GoogleOptions>; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/google-generative-ai` or `googleGenerativeAIApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/google-generative-ai` or `googleGenerativeAIApi().streamSimple`. */ export const streamSimpleGoogle = googleGenerativeAIStreams.streamSimple as StreamFunction< "google-generative-ai", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/google-vertex` or `googleVertexApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/google-vertex` or `googleVertexApi().stream`. */ export const streamGoogleVertex = googleVertexStreams.stream as StreamFunction<"google-vertex", GoogleVertexOptions>; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/google-vertex` or `googleVertexApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/google-vertex` or `googleVertexApi().streamSimple`. */ export const streamSimpleGoogleVertex = googleVertexStreams.streamSimple as StreamFunction< "google-vertex", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/mistral-conversations` or `mistralConversationsApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/mistral-conversations` or `mistralConversationsApi().stream`. */ export const streamMistral = mistralConversationsStreams.stream as StreamFunction< "mistral-conversations", MistralOptions >; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/mistral-conversations` or `mistralConversationsApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/mistral-conversations` or `mistralConversationsApi().streamSimple`. */ export const streamSimpleMistral = mistralConversationsStreams.streamSimple as StreamFunction< "mistral-conversations", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/openai-codex-responses` or `openAICodexResponsesApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/openai-codex-responses` or `openAICodexResponsesApi().stream`. */ export const streamOpenAICodexResponses = openAICodexResponsesStreams.stream as StreamFunction< "openai-codex-responses", OpenAICodexResponsesOptions >; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/openai-codex-responses` or `openAICodexResponsesApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/openai-codex-responses` or `openAICodexResponsesApi().streamSimple`. */ export const streamSimpleOpenAICodexResponses = openAICodexResponsesStreams.streamSimple as StreamFunction< "openai-codex-responses", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/openai-completions` or `openAICompletionsApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/openai-completions` or `openAICompletionsApi().stream`. */ export const streamOpenAICompletions = openAICompletionsStreams.stream as StreamFunction< "openai-completions", OpenAICompletionsOptions >; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/openai-completions` or `openAICompletionsApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/openai-completions` or `openAICompletionsApi().streamSimple`. */ export const streamSimpleOpenAICompletions = openAICompletionsStreams.streamSimple as StreamFunction< "openai-completions", SimpleStreamOptions >; -/** @deprecated Use `stream` from `@earendil-works/diffex-ai/api/openai-responses` or `openAIResponsesApi().stream`. */ +/** @deprecated Use `stream` from `@diffexai/diffex-ai/api/openai-responses` or `openAIResponsesApi().stream`. */ export const streamOpenAIResponses = openAIResponsesStreams.stream as StreamFunction< "openai-responses", OpenAIResponsesOptions >; -/** @deprecated Use `streamSimple` from `@earendil-works/diffex-ai/api/openai-responses` or `openAIResponsesApi().streamSimple`. */ +/** @deprecated Use `streamSimple` from `@diffexai/diffex-ai/api/openai-responses` or `openAIResponsesApi().streamSimple`. */ export const streamSimpleOpenAIResponses = openAIResponsesStreams.streamSimple as StreamFunction< "openai-responses", SimpleStreamOptions diff --git a/packages/ai/src/types.ts b/packages/ai/src/types.ts index 6f47aedf4..7806a3f10 100644 --- a/packages/ai/src/types.ts +++ b/packages/ai/src/types.ts @@ -1,4 +1,4 @@ -import type { TelemetryContext } from "@earendil-works/diffex-telemetry"; +import type { TelemetryContext } from "@diffexai/diffex-telemetry"; import type { AnthropicOptions } from "./api/anthropic-messages.ts"; import type { AzureOpenAIResponsesOptions } from "./api/azure-openai-responses.ts"; import type { BedrockOptions } from "./api/bedrock-converse-stream.ts"; diff --git a/packages/ai/test/github-copilot-oauth.test.ts b/packages/ai/test/github-copilot-oauth.test.ts index 60c6df475..44b785eb7 100644 --- a/packages/ai/test/github-copilot-oauth.test.ts +++ b/packages/ai/test/github-copilot-oauth.test.ts @@ -2,16 +2,14 @@ import { afterEach, describe, expect, it, vi } from "vitest"; import { InMemoryCredentialStore } from "../src/auth/credential-store.ts"; import { githubCopilotOAuth } from "../src/auth/oauth/github-copilot.ts"; import { createModels } from "../src/models.ts"; -import { githubCopilotProvider } from "../src/providers/github-copilot.ts"; import { GITHUB_COPILOT_MODELS } from "../src/providers/github-copilot.models.ts"; +import { githubCopilotProvider } from "../src/providers/github-copilot.ts"; const neverAbortedSignal = new AbortController().signal; // Copilot retires models from the generated catalog independently of this test, // so select the asserted model from the current catalog instead of pinning an id. -const copilotPickerModelId = Object.values(GITHUB_COPILOT_MODELS).find( - (model) => model.api === "openai-responses", -)?.id; +const copilotPickerModelId = Object.values(GITHUB_COPILOT_MODELS).find((model) => model.api === "openai-responses")?.id; if (copilotPickerModelId === undefined) { throw new Error("GitHub Copilot generated catalog has no openai-responses model"); } diff --git a/packages/ai/test/telemetry-options.test.ts b/packages/ai/test/telemetry-options.test.ts index 3a4f53605..28a5299af 100644 --- a/packages/ai/test/telemetry-options.test.ts +++ b/packages/ai/test/telemetry-options.test.ts @@ -1,4 +1,4 @@ -import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@earendil-works/diffex-telemetry"; +import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@diffexai/diffex-telemetry"; import { describe, expect, it } from "vitest"; import { buildBaseOptions } from "../src/api/simple-options.ts"; import { generateImages } from "../src/images.ts"; diff --git a/packages/ai/vitest.config.ts b/packages/ai/vitest.config.ts index 2e62c8621..d54c473dc 100644 --- a/packages/ai/vitest.config.ts +++ b/packages/ai/vitest.config.ts @@ -12,6 +12,6 @@ export default defineConfig({ silent: "passed-only", }, resolve: { - alias: [{ find: /^@earendil-works\/diffex-telemetry$/, replacement: telemetrySrcIndex }], + alias: [{ find: /^@diffexai\/diffex-telemetry$/, replacement: telemetrySrcIndex }], }, }); diff --git a/packages/client/README.md b/packages/client/README.md index 967c31631..b6751ec5a 100644 --- a/packages/client/README.md +++ b/packages/client/README.md @@ -1,9 +1,9 @@ -# @earendil-works/diffex-client +# @diffexai/diffex-client Transport-neutral client for remote Diffex sessions. `DiffexClient` exchanges length-prefixed CBOR messages through a small `ByteTransport` interface. The package has no Node-specific imports. ```ts -import { DiffexClient, type ByteTransportFactory } from "@earendil-works/diffex-client"; +import { DiffexClient, type ByteTransportFactory } from "@diffexai/diffex-client"; const transportFactory: ByteTransportFactory = async (handlers) => { // Connect using WebSocket, Unix socket, or another ordered byte transport. @@ -46,8 +46,8 @@ Subscriber exceptions are isolated from protocol state. Set `onListenerError` in Node.js and Bun consumers can use the separately exported Unix-domain socket transport: ```ts -import { DiffexClient } from "@earendil-works/diffex-client"; -import { createUnixTransportFactory } from "@earendil-works/diffex-client/unix"; +import { DiffexClient } from "@diffexai/diffex-client"; +import { createUnixTransportFactory } from "@diffexai/diffex-client/unix"; const client = new DiffexClient({ transportFactory: createUnixTransportFactory({ @@ -60,15 +60,15 @@ await client.connect(); `maxPendingBytes` bounds queued outbound data. It defaults to four times the protocol frame limit. The transport preserves send order and waits for socket backpressure before resolving each send. -The `@earendil-works/diffex-client` root remains transport- and runtime-neutral. Importing the Node-compatible transport requires the explicit `@earendil-works/diffex-client/unix` subpath. +The `@diffexai/diffex-client` root remains transport- and runtime-neutral. Importing the Node-compatible transport requires the explicit `@diffexai/diffex-client/unix` subpath. ## Hosted Diffex cloud Use the separately exported cloud client for the authenticated REST lifecycle and native WebSocket attachment: ```ts -import { DiffexClient } from "@earendil-works/diffex-client"; -import { DiffexCloudClient } from "@earendil-works/diffex-client/cloud"; +import { DiffexClient } from "@diffexai/diffex-client"; +import { DiffexCloudClient } from "@diffexai/diffex-client/cloud"; const cloud = new DiffexCloudClient({ baseUrl: "https://api.diffex.ai", @@ -89,8 +89,8 @@ Every transport connection obtains a fresh, short-lived attachment URL, and only Browser and Node runtimes with a global `WebSocket` implementation can use the separately exported transport: ```ts -import { DiffexClient } from "@earendil-works/diffex-client"; -import { createWebSocketTransportFactory } from "@earendil-works/diffex-client/websocket"; +import { DiffexClient } from "@diffexai/diffex-client"; +import { createWebSocketTransportFactory } from "@diffexai/diffex-client/websocket"; const client = new DiffexClient({ transportFactory: createWebSocketTransportFactory({ diff --git a/packages/client/package.json b/packages/client/package.json index 39de37430..86b2f1dd0 100644 --- a/packages/client/package.json +++ b/packages/client/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-client", + "name": "@diffexai/diffex-client", "version": "0.2.0", "description": "Transport-neutral client for remote Diffex sessions over framed CBOR bytes", "type": "module", @@ -44,7 +44,7 @@ "cbor", "binary" ], - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", @@ -55,7 +55,7 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/diffex-protocol": "^0.2.0" + "@diffexai/diffex-protocol": "^0.2.0" }, "devDependencies": { "shx": "0.4.0", diff --git a/packages/client/src/client.ts b/packages/client/src/client.ts index 3027519ab..1c45d9a13 100644 --- a/packages/client/src/client.ts +++ b/packages/client/src/client.ts @@ -9,7 +9,7 @@ import { type ServerEvent, type ServerSnapshot, type SessionMetadata, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { Connection } from "./connection.ts"; import { DiffexClientDisposedError, diff --git a/packages/client/src/cloud.ts b/packages/client/src/cloud.ts index 29935be94..7120ebb05 100644 --- a/packages/client/src/cloud.ts +++ b/packages/client/src/cloud.ts @@ -1,4 +1,4 @@ -import { PROTOCOL_VERSION } from "@earendil-works/diffex-protocol"; +import { PROTOCOL_VERSION } from "@diffexai/diffex-protocol"; import type { ByteTransportFactory } from "./transport.ts"; import { createWebSocketTransportFactory, type WebSocketConstructor } from "./websocket.ts"; diff --git a/packages/client/src/connection.ts b/packages/client/src/connection.ts index 4bd7082bc..f5ff46950 100644 --- a/packages/client/src/connection.ts +++ b/packages/client/src/connection.ts @@ -6,7 +6,7 @@ import { type ServerMessage, ServerMessageDecoder, type ServerSnapshot, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { DiffexDisconnectedError, DiffexServerError, toDisconnectedError, toError } from "./errors.ts"; import { createPromiseResolvers, type PromiseResolvers } from "./promise.ts"; import type { ByteTransport, ByteTransportFactory, ByteTransportHandlers } from "./transport.ts"; diff --git a/packages/client/src/errors.ts b/packages/client/src/errors.ts index a1dfdad68..746656b7c 100644 --- a/packages/client/src/errors.ts +++ b/packages/client/src/errors.ts @@ -1,4 +1,4 @@ -import type { JsonValue, ProtocolError, ProtocolErrorCode } from "@earendil-works/diffex-protocol"; +import type { JsonValue, ProtocolError, ProtocolErrorCode } from "@diffexai/diffex-protocol"; export class DiffexServerError extends Error { readonly code: ProtocolErrorCode; diff --git a/packages/client/src/session-handle.ts b/packages/client/src/session-handle.ts index 4d791014e..2e5dfbc0b 100644 --- a/packages/client/src/session-handle.ts +++ b/packages/client/src/session-handle.ts @@ -5,7 +5,7 @@ import type { ServerEvent, SessionSnapshot, ThinkingLevel, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import type { Unsubscribe } from "./types.ts"; type SessionCommand = Extract; diff --git a/packages/client/src/state.ts b/packages/client/src/state.ts index 1552c0b39..29539d44b 100644 --- a/packages/client/src/state.ts +++ b/packages/client/src/state.ts @@ -1,4 +1,4 @@ -import type { CommandResult, ServerEvent, ServerSnapshot, SessionSnapshot } from "@earendil-works/diffex-protocol"; +import type { CommandResult, ServerEvent, ServerSnapshot, SessionSnapshot } from "@diffexai/diffex-protocol"; import { toError } from "./errors.ts"; import type { ListenerErrorHandler, Unsubscribe } from "./types.ts"; diff --git a/packages/client/src/types.ts b/packages/client/src/types.ts index 9251f3bfd..712216a7f 100644 --- a/packages/client/src/types.ts +++ b/packages/client/src/types.ts @@ -1,4 +1,4 @@ -import type { ModelRef, ThinkingLevel } from "@earendil-works/diffex-protocol"; +import type { ModelRef, ThinkingLevel } from "@diffexai/diffex-protocol"; import type { ByteTransportFactory } from "./transport.ts"; export type ConnectionState = "disconnected" | "connecting" | "connected"; diff --git a/packages/client/src/unix.ts b/packages/client/src/unix.ts index ae15beecd..3077ec920 100644 --- a/packages/client/src/unix.ts +++ b/packages/client/src/unix.ts @@ -1,5 +1,5 @@ import { createConnection, type Socket } from "node:net"; -import { DEFAULT_MAX_FRAME_LENGTH } from "@earendil-works/diffex-protocol"; +import { DEFAULT_MAX_FRAME_LENGTH } from "@diffexai/diffex-protocol"; import type { ByteTransport, ByteTransportFactory, ByteTransportHandlers } from "./transport.ts"; const MAX_UNIX_SOCKET_PATH_BYTES = process.platform === "linux" ? 107 : 103; diff --git a/packages/client/src/websocket.ts b/packages/client/src/websocket.ts index 384ddaddc..11e1a792b 100644 --- a/packages/client/src/websocket.ts +++ b/packages/client/src/websocket.ts @@ -1,4 +1,4 @@ -import { DEFAULT_MAX_FRAME_LENGTH } from "@earendil-works/diffex-protocol"; +import { DEFAULT_MAX_FRAME_LENGTH } from "@diffexai/diffex-protocol"; import type { ByteTransport, ByteTransportFactory, ByteTransportHandlers } from "./transport.ts"; type WebSocketData = ArrayBuffer | ArrayBufferView; diff --git a/packages/client/test/connection.test.ts b/packages/client/test/connection.test.ts index c4d6b4e51..37f11bb89 100644 --- a/packages/client/test/connection.test.ts +++ b/packages/client/test/connection.test.ts @@ -6,7 +6,7 @@ import { PROTOCOL_VERSION, ProtocolValidationError, type ServerSnapshot, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { describe, expect, test } from "vitest"; import { type ByteTransportFactory, DiffexClient, DiffexDisconnectedError } from "../src/index.ts"; import { diff --git a/packages/client/test/disposal.test.ts b/packages/client/test/disposal.test.ts index b789e514e..7f29181af 100644 --- a/packages/client/test/disposal.test.ts +++ b/packages/client/test/disposal.test.ts @@ -1,4 +1,4 @@ -import { PROTOCOL_VERSION } from "@earendil-works/diffex-protocol"; +import { PROTOCOL_VERSION } from "@diffexai/diffex-protocol"; import { describe, expect, test } from "vitest"; import { DiffexClient, DiffexClientDisposedError } from "../src/index.ts"; import { attachSession, baseServerSnapshot, connectClient, MemoryByteServer, sessionSnapshot } from "./support.ts"; diff --git a/packages/client/test/support.ts b/packages/client/test/support.ts index 884663120..c03d525df 100644 --- a/packages/client/test/support.ts +++ b/packages/client/test/support.ts @@ -7,7 +7,7 @@ import { type ServerMessage, type ServerSnapshot, type SessionSnapshot, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import type { ByteTransport, ByteTransportHandlers, DiffexSessionHandle } from "../src/index.ts"; import { DiffexClient } from "../src/index.ts"; diff --git a/packages/client/test/unix.test.ts b/packages/client/test/unix.test.ts index 7b0c18be8..cff5ed3e3 100644 --- a/packages/client/test/unix.test.ts +++ b/packages/client/test/unix.test.ts @@ -6,7 +6,7 @@ import { encodeServerMessage, PROTOCOL_VERSION, type ServerSnapshot, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { describe, expect, test } from "vitest"; import { DiffexClient } from "../src/index.ts"; import { createUnixTransportFactory } from "../src/unix.ts"; diff --git a/packages/client/tsconfig.build.json b/packages/client/tsconfig.build.json index b23f7e195..95964444a 100644 --- a/packages/client/tsconfig.build.json +++ b/packages/client/tsconfig.build.json @@ -4,7 +4,7 @@ "outDir": "./dist", "rootDir": "./src", "paths": { - "@earendil-works/diffex-protocol": ["../protocol/dist/index.d.ts"] + "@diffexai/diffex-protocol": ["../protocol/dist/index.d.ts"] } }, "include": ["src/**/*.ts"], diff --git a/packages/client/tsconfig.test.json b/packages/client/tsconfig.test.json index 64249ed6e..21a5f3551 100644 --- a/packages/client/tsconfig.test.json +++ b/packages/client/tsconfig.test.json @@ -6,7 +6,7 @@ "moduleResolution": "NodeNext", "types": ["node", "vitest"], "paths": { - "@earendil-works/diffex-protocol": ["../protocol/src/index.ts"] + "@diffexai/diffex-protocol": ["../protocol/src/index.ts"] } }, "include": ["src/**/*.ts", "test/**/*.ts"] diff --git a/packages/client/vitest.config.ts b/packages/client/vitest.config.ts index 42ca8887e..ec06d9b69 100644 --- a/packages/client/vitest.config.ts +++ b/packages/client/vitest.config.ts @@ -9,7 +9,7 @@ export default defineConfig({ }, resolve: { alias: { - "@earendil-works/diffex-protocol": fileURLToPath(new URL("../protocol/src/index.ts", import.meta.url)), + "@diffexai/diffex-protocol": fileURLToPath(new URL("../protocol/src/index.ts", import.meta.url)), }, }, }); diff --git a/packages/coding-agent-server/README.md b/packages/coding-agent-server/README.md index bbfe6b946..2a415d3e0 100644 --- a/packages/coding-agent-server/README.md +++ b/packages/coding-agent-server/README.md @@ -1,6 +1,6 @@ -# @earendil-works/diffex-coding-agent-server +# @diffexai/diffex-coding-agent-server -Production service adapter between the Pi-derived Diffex coding-agent runtime and `@earendil-works/diffex-server`. +Production service adapter between the Pi-derived Diffex coding-agent runtime and `@diffexai/diffex-server`. The hosted control plane allocates one cloud session per sandbox and passes its stable session ID to this service. Protocol clients attach to that existing session rather than creating an unrelated runtime identity. diff --git a/packages/coding-agent-server/package.json b/packages/coding-agent-server/package.json index 0b1d38c66..c0d3ac904 100644 --- a/packages/coding-agent-server/package.json +++ b/packages/coding-agent-server/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-coding-agent-server", + "name": "@diffexai/diffex-coding-agent-server", "version": "0.2.0", "description": "Hosted Diffex protocol service backed by the Pi-derived coding-agent runtime", "type": "module", @@ -23,12 +23,12 @@ "directory": "packages/coding-agent-server" }, "dependencies": { - "@earendil-works/diffex-coding-agent": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", - "@earendil-works/diffex-server": "^0.2.0" + "@diffexai/diffex": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", + "@diffexai/diffex-server": "^0.2.0" }, "devDependencies": { - "@earendil-works/diffex-client": "^0.2.0", + "@diffexai/diffex-client": "^0.2.0", "shx": "0.4.0", "vitest": "4.1.9", "ws": "8.21.0" diff --git a/packages/coding-agent-server/src/cli.ts b/packages/coding-agent-server/src/cli.ts index 873225b18..ec40a2658 100644 --- a/packages/coding-agent-server/src/cli.ts +++ b/packages/coding-agent-server/src/cli.ts @@ -2,8 +2,8 @@ import { timingSafeEqual } from "node:crypto"; import { join } from "node:path"; -import { ModelRuntime } from "@earendil-works/diffex-coding-agent"; -import { createWebSocketServer } from "@earendil-works/diffex-server/websocket"; +import { ModelRuntime } from "@diffexai/diffex"; +import { createWebSocketServer } from "@diffexai/diffex-server/websocket"; import { createHostedCodingAgentService } from "./service.ts"; import { createDurableUsageReporter } from "./usage-reporter.ts"; diff --git a/packages/coding-agent-server/src/service.ts b/packages/coding-agent-server/src/service.ts index 8f817f147..2d010e303 100644 --- a/packages/coding-agent-server/src/service.ts +++ b/packages/coding-agent-server/src/service.ts @@ -7,7 +7,7 @@ import { getAgentDir, ModelRuntime, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; import type { ModelMetadata, ModelRef, @@ -17,7 +17,7 @@ import type { ThinkingLevel, TranscriptItem, UserTranscriptItem, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { type CreateSessionOptions, DiffexServerError, @@ -30,7 +30,7 @@ import { toProtocolModelMetadata, toProtocolToolResultMessage, toProtocolUserMessage, -} from "@earendil-works/diffex-server"; +} from "@diffexai/diffex-server"; import type { RuntimeUsageReporter } from "./usage-reporter.ts"; export interface HostedCodingAgentServiceOptions { sessionId: string; diff --git a/packages/coding-agent-server/test/websocket-flow.test.ts b/packages/coding-agent-server/test/websocket-flow.test.ts index 54ee4bd6d..d28908947 100644 --- a/packages/coding-agent-server/test/websocket-flow.test.ts +++ b/packages/coding-agent-server/test/websocket-flow.test.ts @@ -1,12 +1,12 @@ import { mkdirSync, mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { DiffexClient } from "@earendil-works/diffex-client"; -import { createWebSocketTransportFactory } from "@earendil-works/diffex-client/websocket"; -import { ModelRuntime } from "@earendil-works/diffex-coding-agent"; -import { DiffexServer } from "@earendil-works/diffex-server"; -import { TestServerService } from "@earendil-works/diffex-server/testing"; -import { createWebSocketListener } from "@earendil-works/diffex-server/websocket"; +import { ModelRuntime } from "@diffexai/diffex"; +import { DiffexClient } from "@diffexai/diffex-client"; +import { createWebSocketTransportFactory } from "@diffexai/diffex-client/websocket"; +import { DiffexServer } from "@diffexai/diffex-server"; +import { TestServerService } from "@diffexai/diffex-server/testing"; +import { createWebSocketListener } from "@diffexai/diffex-server/websocket"; import { afterEach, describe, expect, it } from "vitest"; import { WebSocket } from "ws"; import { createHostedCodingAgentService } from "../src/service.ts"; diff --git a/packages/coding-agent-server/tsconfig.build.json b/packages/coding-agent-server/tsconfig.build.json index eac5a85dc..3164db08c 100644 --- a/packages/coding-agent-server/tsconfig.build.json +++ b/packages/coding-agent-server/tsconfig.build.json @@ -4,10 +4,10 @@ "outDir": "./dist", "rootDir": "./src", "paths": { - "@earendil-works/diffex-coding-agent": ["../coding-agent/dist/index.d.ts"], - "@earendil-works/diffex-protocol": ["../protocol/dist/index.d.ts"], - "@earendil-works/diffex-server": ["../server/dist/index.d.ts"], - "@earendil-works/diffex-server/websocket": ["../server/dist/transports/websocket/index.d.ts"] + "@diffexai/diffex": ["../coding-agent/dist/index.d.ts"], + "@diffexai/diffex-protocol": ["../protocol/dist/index.d.ts"], + "@diffexai/diffex-server": ["../server/dist/index.d.ts"], + "@diffexai/diffex-server/websocket": ["../server/dist/transports/websocket/index.d.ts"] } }, "include": ["src/**/*.ts"], diff --git a/packages/coding-agent-server/vitest.config.ts b/packages/coding-agent-server/vitest.config.ts index 3a177c301..eda426564 100644 --- a/packages/coding-agent-server/vitest.config.ts +++ b/packages/coding-agent-server/vitest.config.ts @@ -9,31 +9,31 @@ export default mergeConfig( resolve: { alias: [ { - find: /^@earendil-works\/diffex-client\/websocket$/, + find: /^@diffexai\/diffex-client\/websocket$/, replacement: fileURLToPath(new URL("../client/src/websocket.ts", import.meta.url)), }, { - find: /^@earendil-works\/diffex-client$/, + find: /^@diffexai\/diffex-client$/, replacement: fileURLToPath(new URL("../client/src/index.ts", import.meta.url)), }, { - find: /^@earendil-works\/diffex-coding-agent$/, + find: /^@diffexai\/diffex$/, replacement: workspaceSourcePaths.codingAgentIndex, }, { - find: /^@earendil-works\/diffex-protocol$/, + find: /^@diffexai\/diffex-protocol$/, replacement: fileURLToPath(new URL("../protocol/src/index.ts", import.meta.url)), }, { - find: /^@earendil-works\/diffex-server\/testing$/, + find: /^@diffexai\/diffex-server\/testing$/, replacement: fileURLToPath(new URL("../server/src/testing/index.ts", import.meta.url)), }, { - find: /^@earendil-works\/diffex-server\/websocket$/, + find: /^@diffexai\/diffex-server\/websocket$/, replacement: fileURLToPath(new URL("../server/src/transports/websocket/index.ts", import.meta.url)), }, { - find: /^@earendil-works\/diffex-server$/, + find: /^@diffexai\/diffex-server$/, replacement: fileURLToPath(new URL("../server/src/index.ts", import.meta.url)), }, ], diff --git a/packages/coding-agent/README.md b/packages/coding-agent/README.md index 73e739c81..f05fcd92f 100644 --- a/packages/coding-agent/README.md +++ b/packages/coding-agent/README.md @@ -5,7 +5,7 @@

Upstream Discord - npm + npm

> New issues and PRs from new contributors are auto-closed by default. Maintainers review auto-closed issues daily. See [CONTRIBUTING.md](../../CONTRIBUTING.md). @@ -64,7 +64,7 @@ Example upstream `pi-mono` work sessions are published here: ## Quick Start ```bash -npm install -g --ignore-scripts @earendil-works/diffex-coding-agent +npm install -g --ignore-scripts @diffexai/diffex ``` `--ignore-scripts` disables dependency lifecycle scripts during install. Diffex does not require install scripts for normal npm installs. @@ -489,7 +489,7 @@ See [docs/packages.md](docs/packages.md). ### SDK ```typescript -import { createAgentSession, ModelRuntime, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, ModelRuntime, SessionManager } from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create(); const { session } = await createAgentSession({ @@ -728,9 +728,9 @@ MIT ## See Also -- [@earendil-works/diffex-ai](https://www.npmjs.com/package/@earendil-works/diffex-ai): Core LLM toolkit -- [@earendil-works/diffex-agent-core](https://www.npmjs.com/package/@earendil-works/diffex-agent-core): Agent framework -- [@earendil-works/diffex-tui](https://www.npmjs.com/package/@earendil-works/diffex-tui): Terminal UI components +- [@diffexai/diffex-ai](https://www.npmjs.com/package/@diffexai/diffex-ai): Core LLM toolkit +- [@diffexai/diffex-agent-core](https://www.npmjs.com/package/@diffexai/diffex-agent-core): Agent framework +- [@diffexai/diffex-tui](https://www.npmjs.com/package/@diffexai/diffex-tui): Terminal UI components

The upstream project's domain was graciously donated by diff --git a/packages/coding-agent/docs/compaction.md b/packages/coding-agent/docs/compaction.md index 4f24d1db2..b6d04873f 100644 --- a/packages/coding-agent/docs/compaction.md +++ b/packages/coding-agent/docs/compaction.md @@ -9,7 +9,7 @@ LLMs have limited context windows. When conversations grow too long, Diffex uses - [`packages/coding-agent/src/core/session-manager.ts`](https://github.com/diffexai/diffex/blob/main/packages/coding-agent/src/core/session-manager.ts) - Entry types (`CompactionEntry`, `BranchSummaryEntry`) - [`packages/coding-agent/src/core/extensions/types.ts`](https://github.com/diffexai/diffex/blob/main/packages/coding-agent/src/core/extensions/types.ts) - Extension event types -For TypeScript definitions in your project, inspect `node_modules/@earendil-works/diffex-coding-agent/dist/`. +For TypeScript definitions in your project, inspect `node_modules/@diffexai/diffex/dist/`. ## Overview @@ -314,7 +314,7 @@ diffex.on("session_before_compact", async (event, ctx) => { To generate a summary with your own model, convert messages to text using `serializeConversation`: ```typescript -import { convertToLlm, serializeConversation } from "@earendil-works/diffex-coding-agent"; +import { convertToLlm, serializeConversation } from "@diffexai/diffex"; diffex.on("session_before_compact", async (event, ctx) => { const { preparation } = event; diff --git a/packages/coding-agent/docs/containerization.md b/packages/coding-agent/docs/containerization.md index 400f0ec61..3749d0712 100644 --- a/packages/coding-agent/docs/containerization.md +++ b/packages/coding-agent/docs/containerization.md @@ -54,7 +54,7 @@ FROM node:24-bookworm-slim RUN apt-get update \ && apt-get install -y --no-install-recommends bash ca-certificates git ripgrep \ && rm -rf /var/lib/apt/lists/* -RUN npm install -g --ignore-scripts @earendil-works/diffex-coding-agent +RUN npm install -g --ignore-scripts @diffexai/diffex WORKDIR /workspace ENTRYPOINT ["diffex"] diff --git a/packages/coding-agent/docs/custom-provider.md b/packages/coding-agent/docs/custom-provider.md index 22e31185a..f6138c32c 100644 --- a/packages/coding-agent/docs/custom-provider.md +++ b/packages/coding-agent/docs/custom-provider.md @@ -33,8 +33,8 @@ See these complete provider examples: Extensions can register either a complete diffex-ai `Provider` or use the legacy provider-config form. Prefer a complete provider when custom authentication, filtering, refresh, or streaming behavior is required. Diffex composes `models.json` overrides above registered native providers. ```typescript -import { createProvider, openAICompletionsApi } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import { createProvider, openAICompletionsApi } from "@diffexai/diffex-ai"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.registerProvider(createProvider({ @@ -125,7 +125,7 @@ To add a completely new provider, specify `models` along with the required confi If the model list comes from a remote endpoint, use an async extension factory: ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default async function (diffex: ExtensionAPI) { const response = await fetch("http://localhost:1234/v1/models"); @@ -288,7 +288,7 @@ The key is resolved for each request. An explicit request `Authorization` header Add OAuth/SSO authentication that integrates with `/login`: ```typescript -import type { OAuthCredentials, OAuthLoginCallbacks } from "@earendil-works/diffex-ai"; +import type { OAuthCredentials, OAuthLoginCallbacks } from "@diffexai/diffex-ai"; diffex.registerProvider("corporate-ai", { baseUrl: "https://ai.corp.com/v1", @@ -417,7 +417,7 @@ import { type SimpleStreamOptions, calculateCost, createAssistantMessageEventStream, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; function streamMyProvider( model: Model, diff --git a/packages/coding-agent/docs/extensions.md b/packages/coding-agent/docs/extensions.md index ef597856a..9cb08ffcf 100644 --- a/packages/coding-agent/docs/extensions.md +++ b/packages/coding-agent/docs/extensions.md @@ -58,7 +58,7 @@ See [examples/extensions/](../examples/extensions/) for working implementations. Create `~/.diffex/agent/extensions/my-extension.ts`: ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function (diffex: ExtensionAPI) { @@ -140,10 +140,10 @@ To share extensions via npm or git as Diffex packages, see [packages.md](package | Package | Purpose | |---------|---------| -| `@earendil-works/diffex-coding-agent` | Extension types (`ExtensionAPI`, `ExtensionContext`, events) | +| `@diffexai/diffex` | Extension types (`ExtensionAPI`, `ExtensionContext`, events) | | `typebox` | Schema definitions for tool parameters | -| `@earendil-works/diffex-ai` | AI utilities (`StringEnum` for Google-compatible enums) | -| `@earendil-works/diffex-tui` | TUI components for custom rendering | +| `@diffexai/diffex-ai` | AI utilities (`StringEnum` for Google-compatible enums) | +| `@diffexai/diffex-tui` | TUI components for custom rendering | npm dependencies work too. Add a `package.json` next to your extension (or in a parent directory), run `npm install`, and imports from `node_modules/` are resolved automatically. @@ -156,7 +156,7 @@ Node.js built-ins (`node:fs`, `node:path`, etc.) are also available. An extension exports a default factory function that receives `ExtensionAPI`. The factory can be synchronous or asynchronous: ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { // Subscribe to events @@ -185,7 +185,7 @@ If the factory returns a `Promise`, Diffex awaits it before continuing startup. Use an async factory for one-time startup work such as fetching remote configuration or dynamically discovering available models. ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default async function (diffex: ExtensionAPI) { const response = await fetch("http://localhost:1234/v1/models"); @@ -766,7 +766,7 @@ Behavior guarantees: - `terminate` only applies to a blocked call; the agent stops early only when every finalized result in the batch is terminating ```typescript -import { isToolCallEventType } from "@earendil-works/diffex-coding-agent"; +import { isToolCallEventType } from "@diffexai/diffex"; diffex.on("tool_call", async (event, ctx) => { // event.toolName - "bash", "read", "write", "edit", etc. @@ -802,7 +802,7 @@ export type MyToolInput = Static; Use `isToolCallEventType` with explicit type parameters: ```typescript -import { isToolCallEventType } from "@earendil-works/diffex-coding-agent"; +import { isToolCallEventType } from "@diffexai/diffex"; import type { MyToolInput } from "my-extension"; diffex.on("tool_call", (event) => { @@ -826,7 +826,7 @@ In parallel tool mode, `tool_result` and `tool_execution_end` may interleave in Use `ctx.signal` for nested async work inside the handler. This lets Esc cancel model calls, `fetch()`, and other abort-aware operations started by the extension. ```typescript -import { isBashToolResult } from "@earendil-works/diffex-coding-agent"; +import { isBashToolResult } from "@diffexai/diffex"; diffex.on("tool_result", async (event, ctx) => { // event.toolName, event.toolCallId, event.input @@ -854,7 +854,7 @@ diffex.on("tool_result", async (event, ctx) => { Fired when user executes `!` or `!!` commands. **Can intercept.** ```typescript -import { createLocalBashOperations } from "@earendil-works/diffex-coding-agent"; +import { createLocalBashOperations } from "@diffexai/diffex"; diffex.on("user_bash", (event, ctx) => { // event.command - the bash command @@ -948,7 +948,7 @@ Current working directory. Use `CONFIG_DIR_NAME` instead of hardcoding `.diffex` when constructing project-local config paths. Rebranded distributions can use a different config directory name. ```typescript -import { CONFIG_DIR_NAME, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import { CONFIG_DIR_NAME, type ExtensionAPI } from "@diffexai/diffex"; import { join } from "node:path"; export default function (diffex: ExtensionAPI) { @@ -1203,7 +1203,7 @@ Options: To discover available sessions, use the static `SessionManager.list()` or `SessionManager.listAll()` methods: ```typescript -import { SessionManager } from "@earendil-works/diffex-coding-agent"; +import { SessionManager } from "@diffexai/diffex"; diffex.registerCommand("switch", { description: "Switch to another session", @@ -1297,7 +1297,7 @@ Tools run with `ExtensionContext`, so they cannot call `ctx.reload()` directly. Example tool the LLM can call to trigger reload: ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function (diffex: ExtensionAPI) { @@ -1346,7 +1346,7 @@ See [dynamic-tools.ts](../examples/extensions/dynamic-tools.ts) for a full examp ```typescript import { Type } from "typebox"; -import { StringEnum } from "@earendil-works/diffex-ai"; +import { StringEnum } from "@diffexai/diffex-ai"; diffex.registerTool({ name: "my_tool", @@ -1505,7 +1505,7 @@ diffex.registerCommand("stats", { Optional: add argument auto-completion for `/command ...`: ```typescript -import type { AutocompleteItem } from "@earendil-works/diffex-tui"; +import type { AutocompleteItem } from "@diffexai/diffex-tui"; diffex.registerCommand("deploy", { description: "Deploy to an environment", @@ -1584,7 +1584,7 @@ If a transformer throws, Diffex keeps the Markdown produced so far and continues Register a custom TUI renderer for custom entries with your `customType`. Custom entries are created with `diffex.appendEntry()` and do not participate in LLM context. ```typescript -import { Box, Text } from "@earendil-works/diffex-tui"; +import { Box, Text } from "@diffexai/diffex-tui"; diffex.registerEntryRenderer("status-card", (entry, { expanded }, theme) => { const data = entry.data as { title: string; count: number }; @@ -1707,10 +1707,10 @@ Dynamic providers can implement `refreshModels`. Diffex calls it during model re `context.signal` is always a concrete signal and provider callbacks must pass it to blocking I/O. Public `ModelRuntime.refresh()` and `ModelRegistry.refresh()` calls accept an optional signal and are unbounded when it is omitted; extensions and applications choose their own deadlines. Cancellation stops the caller waiting even if a provider ignores the signal, but cooperation is still required to stop the underlying work. -Extensions that need native provider auth, filtering, refresh, or stream behavior can register a complete `Provider` from `@earendil-works/diffex-ai`. The provider becomes the composition base and `models.json` overrides still apply above it. +Extensions that need native provider auth, filtering, refresh, or stream behavior can register a complete `Provider` from `@diffexai/diffex-ai`. The provider becomes the composition base and `models.json` overrides still apply above it. ```typescript -import { createProvider, openAICompletionsApi } from "@earendil-works/diffex-ai"; +import { createProvider, openAICompletionsApi } from "@diffexai/diffex-ai"; const provider = createProvider({ id: "local-server", @@ -1893,7 +1893,7 @@ Pass the real target file path to `withFileMutationQueue()`, not the raw user ar Queue the entire mutation window on that target path. That includes read-modify-write logic, not just the final write. ```typescript -import { withFileMutationQueue } from "@earendil-works/diffex-coding-agent"; +import { withFileMutationQueue } from "@diffexai/diffex"; import { mkdir, readFile, writeFile } from "node:fs/promises"; import { dirname, resolve } from "node:path"; @@ -1918,8 +1918,8 @@ async execute(_toolCallId, params, _signal, _onUpdate, ctx) { ```typescript import { Type } from "typebox"; -import { StringEnum } from "@earendil-works/diffex-ai"; -import { Text } from "@earendil-works/diffex-tui"; +import { StringEnum } from "@diffexai/diffex-ai"; +import { Text } from "@diffexai/diffex-tui"; diffex.registerTool({ name: "my_tool", @@ -1990,7 +1990,7 @@ async execute(toolCallId, params) { } ``` -**Important:** Use `StringEnum` from `@earendil-works/diffex-ai` for string enums. `Type.Union`/`Type.Literal` doesn't work with Google's API. +**Important:** Use `StringEnum` from `@diffexai/diffex-ai` for string enums. `Type.Union`/`Type.Literal` doesn't work with Google's API. **Argument preparation:** `prepareArguments(args)` is optional. If defined, it runs before schema validation and before `execute()`. Use it to mimic an older accepted input shape when Diffex resumes an older session whose stored tool call arguments no longer match the current schema. Return the object you want validated against `parameters`. Keep the public schema strict. Do not add deprecated compatibility fields to `parameters` just to keep old resumed sessions working. @@ -2077,7 +2077,7 @@ Built-in tool implementations: Built-in tools support pluggable operations for delegating to remote systems (SSH, containers, etc.): ```typescript -import { createReadTool, createBashTool, type ReadOperations } from "@earendil-works/diffex-coding-agent"; +import { createReadTool, createBashTool, type ReadOperations } from "@diffexai/diffex"; // Create tool with custom operations const remoteRead = createReadTool(cwd, { @@ -2108,7 +2108,7 @@ For `user_bash`, extensions can reuse Diffex's local shell backend via `createLo The bash tool also supports a spawn hook to adjust the command, cwd, or env before execution: ```typescript -import { createBashTool } from "@earendil-works/diffex-coding-agent"; +import { createBashTool } from "@diffexai/diffex"; const bashTool = createBashTool(cwd, { spawnHook: ({ command, cwd, env }) => ({ @@ -2146,7 +2146,7 @@ import { formatSize, // Human-readable size (e.g., "50KB", "1.5MB") DEFAULT_MAX_BYTES, // 50KB DEFAULT_MAX_LINES, // 2000 -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; async execute(toolCallId, params, signal, onUpdate, ctx) { const output = await runCommand(); @@ -2237,7 +2237,7 @@ Use `context.state` for cross-slot shared state. Keep slot-local caches on the r Renders the tool call or header: ```typescript -import { Text } from "@earendil-works/diffex-tui"; +import { Text } from "@diffexai/diffex-tui"; renderCall(args, theme, context) { const text = (context.lastComponent as Text | undefined) ?? new Text("", 0, 0); @@ -2282,7 +2282,7 @@ If a slot intentionally has no visible content, return an empty `Component` such Use `keyHint()` to display keybinding hints that respect the active keybinding configuration: ```typescript -import { keyHint } from "@earendil-works/diffex-coding-agent"; +import { keyHint } from "@diffexai/diffex"; renderResult(result, { expanded }, theme, context) { let text = theme.fg("success", "✓ Done"); @@ -2364,7 +2364,7 @@ For the best cache behavior, keep the loader tool active for the whole session a The following extension registers two searchable tools, removes them from the initial active set, and keeps only `search_tools` as their loader. The example uses simple keyword matching, but the search implementation could use BM25, embeddings, a remote catalog, or project-specific routing. ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; const SEARCHABLE_TOOL_NAMES = new Set(["lookup_weather", "search_issues"]); @@ -2695,7 +2695,7 @@ See [github-issue-autocomplete.ts](../examples/extensions/github-issue-autocompl For complex UI, use `ctx.ui.custom()`. This temporarily replaces the editor with your component until `done()` is called: ```typescript -import { Text, Component } from "@earendil-works/diffex-tui"; +import { Text, Component } from "@diffexai/diffex-tui"; const result = await ctx.ui.custom((tui, theme, keybindings, done) => { const text = new Text("Press Enter to confirm, Escape to cancel", 1, 1); @@ -2760,8 +2760,8 @@ See [tui.md](tui.md) for the full `OverlayOptions` and `OverlayHandle` API and [ Replace the main input editor with a custom implementation (vim mode, emacs mode, etc.): ```typescript -import { CustomEditor, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { matchesKey } from "@earendil-works/diffex-tui"; +import { CustomEditor, type ExtensionAPI } from "@diffexai/diffex"; +import { matchesKey } from "@diffexai/diffex-tui"; class VimEditor extends CustomEditor { private mode: "normal" | "insert" = "insert"; @@ -2811,7 +2811,7 @@ See [tui.md](tui.md) Pattern 7 for a complete example with mode indicator. Register a custom renderer for messages with your `customType`. Use message renderers for content that should participate in LLM context: ```typescript -import { Text } from "@earendil-works/diffex-tui"; +import { Text } from "@diffexai/diffex-tui"; diffex.registerMessageRenderer("my-extension", (message, options, theme) => { const { expanded, outputPad } = options; @@ -2870,7 +2870,7 @@ theme.strikethrough(text) For syntax highlighting in custom tool renderers: ```typescript -import { highlightCode, getLanguageFromPath } from "@earendil-works/diffex-coding-agent"; +import { highlightCode, getLanguageFromPath } from "@diffexai/diffex"; // Highlight code with explicit language const highlighted = highlightCode("const x = 1;", "typescript", theme); diff --git a/packages/coding-agent/docs/index.md b/packages/coding-agent/docs/index.md index 165f348f9..8a9b67471 100644 --- a/packages/coding-agent/docs/index.md +++ b/packages/coding-agent/docs/index.md @@ -7,7 +7,7 @@ Diffex is a minimal terminal coding harness. It is designed to stay small at the Install Diffex with npm: ```bash -npm install -g --ignore-scripts @earendil-works/diffex-coding-agent +npm install -g --ignore-scripts @diffexai/diffex ``` `--ignore-scripts` disables dependency lifecycle scripts during install. Diffex does not require install scripts for normal npm installs. @@ -15,10 +15,10 @@ npm install -g --ignore-scripts @earendil-works/diffex-coding-agent To uninstall Diffex, use the matching package manager. For npm installs: ```bash -npm uninstall -g @earendil-works/diffex-coding-agent +npm uninstall -g @diffexai/diffex ``` -For pnpm, Yarn, or Bun installs, use the matching global remove command: `pnpm remove -g @earendil-works/diffex-coding-agent`, `yarn global remove @earendil-works/diffex-coding-agent`, or `bun uninstall -g @earendil-works/diffex-coding-agent`. +For pnpm, Yarn, or Bun installs, use the matching global remove command: `pnpm remove -g @diffexai/diffex`, `yarn global remove @diffexai/diffex`, or `bun uninstall -g @diffexai/diffex`. Then run it in a project directory: diff --git a/packages/coding-agent/docs/packages.md b/packages/coding-agent/docs/packages.md index 6e5bb0ea5..a6ca4f851 100644 --- a/packages/coding-agent/docs/packages.md +++ b/packages/coding-agent/docs/packages.md @@ -170,7 +170,7 @@ If no `diffex` manifest is present, Diffex auto-discovers resources from these d Third party runtime dependencies belong in `dependencies` in `package.json`. Dependencies that do not register extensions, skills, prompt templates, or themes also belong in `dependencies`. When Diffex installs a package from npm or git, it runs `npm install`, so those dependencies are installed automatically. -Diffex bundles core packages for extensions and skills. If you import any of these, list them in `peerDependencies` with a `"*"` range and do not bundle them: `@earendil-works/diffex-ai`, `@earendil-works/diffex-agent-core`, `@earendil-works/diffex-coding-agent`, `@earendil-works/diffex-tui`, `typebox`. +Diffex bundles core packages for extensions and skills. If you import any of these, list them in `peerDependencies` with a `"*"` range and do not bundle them: `@diffexai/diffex-ai`, `@diffexai/diffex-agent-core`, `@diffexai/diffex`, `@diffexai/diffex-tui`, `typebox`. Other Diffex packages must be bundled in your tarball. Add them to `dependencies` and `bundledDependencies`, then reference their resources through `node_modules/` paths. Diffex loads packages with separate module roots, so separate installs do not collide or share modules. diff --git a/packages/coding-agent/docs/quickstart.md b/packages/coding-agent/docs/quickstart.md index 414966dbd..fc4d6e09c 100644 --- a/packages/coding-agent/docs/quickstart.md +++ b/packages/coding-agent/docs/quickstart.md @@ -7,7 +7,7 @@ This page gets you from install to a useful first Diffex session. Diffex is distributed as an npm package: ```bash -npm install -g --ignore-scripts @earendil-works/diffex-coding-agent +npm install -g --ignore-scripts @diffexai/diffex ``` `--ignore-scripts` disables dependency lifecycle scripts during install. Diffex does not require install scripts for normal npm installs. @@ -18,16 +18,16 @@ Use the package manager that installed Diffex: ```bash # npm -npm uninstall -g @earendil-works/diffex-coding-agent +npm uninstall -g @diffexai/diffex # pnpm -pnpm remove -g @earendil-works/diffex-coding-agent +pnpm remove -g @diffexai/diffex # Yarn -yarn global remove @earendil-works/diffex-coding-agent +yarn global remove @diffexai/diffex # Bun -bun uninstall -g @earendil-works/diffex-coding-agent +bun uninstall -g @diffexai/diffex ``` Uninstalling Diffex leaves settings, credentials, sessions, and installed Diffex packages in `~/.diffex/agent/`. diff --git a/packages/coding-agent/docs/rpc.md b/packages/coding-agent/docs/rpc.md index 028d0486e..3ca2b66e8 100644 --- a/packages/coding-agent/docs/rpc.md +++ b/packages/coding-agent/docs/rpc.md @@ -2,7 +2,7 @@ RPC mode enables headless operation of the coding agent via a JSON protocol over stdin/stdout. This is useful for embedding the agent in other applications, IDEs, or custom UIs. -**Note for Node.js/TypeScript users**: If you're building a Node.js application, consider using `AgentSession` directly from `@earendil-works/diffex-coding-agent` instead of spawning a subprocess. See [`src/core/agent-session.ts`](../src/core/agent-session.ts) for the API. For a subprocess-based TypeScript client, see [`src/modes/rpc/rpc-client.ts`](../src/modes/rpc/rpc-client.ts). +**Note for Node.js/TypeScript users**: If you're building a Node.js application, consider using `AgentSession` directly from `@diffexai/diffex` instead of spawning a subprocess. See [`src/core/agent-session.ts`](../src/core/agent-session.ts) for the API. For a subprocess-based TypeScript client, see [`src/modes/rpc/rpc-client.ts`](../src/modes/rpc/rpc-client.ts). ## Starting RPC Mode diff --git a/packages/coding-agent/docs/sdk.md b/packages/coding-agent/docs/sdk.md index 1feb74031..054650b5a 100644 --- a/packages/coding-agent/docs/sdk.md +++ b/packages/coding-agent/docs/sdk.md @@ -16,7 +16,7 @@ See [examples/sdk/](../examples/sdk/) for working examples from minimal to full ## Quick Start ```typescript -import { createAgentSession, ModelRuntime, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, ModelRuntime, SessionManager } from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create(); const { session } = await createAgentSession({ @@ -37,7 +37,7 @@ await session.dispose(); ## Installation ```bash -npm install @earendil-works/diffex-coding-agent +npm install @diffexai/diffex ``` The SDK is included in the main package. No separate installation needed. @@ -51,7 +51,7 @@ The main factory function for a single `AgentSession`. `createAgentSession()` uses a `ResourceLoader` to supply extensions, skills, prompt templates, themes, and context files. If you do not provide one, it uses `DefaultResourceLoader` with standard discovery. ```typescript -import { createAgentSession, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, SessionManager } from "@diffexai/diffex"; // Minimal: defaults with DefaultResourceLoader const { session } = await createAgentSession(); @@ -132,7 +132,7 @@ import { createAgentSessionServices, getAgentDir, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => { const services = await createAgentSessionServices({ cwd }); @@ -250,7 +250,7 @@ Both `steer()` and `followUp()` expand file-based prompt templates but error on ### Agent and AgentState -The `Agent` class (from `@earendil-works/diffex-agent-core`) handles the core LLM interaction. Access it via `session.agent`. +The `Agent` class (from `@diffexai/diffex-agent-core`) handles the core LLM interaction. Access it via `session.agent`. ```typescript // Access current state @@ -397,8 +397,8 @@ When you pass a custom `ResourceLoader`, `cwd` and `agentDir` no longer control ### Model ```typescript -import { getModel } from "@earendil-works/diffex-ai"; -import { ModelRuntime } from "@earendil-works/diffex-coding-agent"; +import { getModel } from "@diffexai/diffex-ai"; +import { ModelRuntime } from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create(); @@ -438,7 +438,7 @@ To match CLI model parsing, use the exported resolver helpers: import { resolveCliModel, resolveModelScopeWithDiagnostics, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const cliModel = resolveCliModel({ cliModel: "anthropic/claude-opus-4-5:high", @@ -469,8 +469,8 @@ Authentication resolution priority (handled by `ModelRuntime`): 4. Fallback resolver (for custom provider keys from `models.json`) ```typescript -import { InMemoryCredentialStore } from "@earendil-works/diffex-ai"; -import { createAgentSession, ModelRuntime } from "@earendil-works/diffex-coding-agent"; +import { InMemoryCredentialStore } from "@diffexai/diffex-ai"; +import { createAgentSession, ModelRuntime } from "@diffexai/diffex"; // Default: uses ~/.diffex/agent/auth.json and ~/.diffex/agent/models.json const modelRuntime = await ModelRuntime.create(); @@ -524,7 +524,7 @@ A failed or timed-out network refresh does not undo a successful credential oper Use a `ResourceLoader` to override the system prompt: ```typescript -import { createAgentSession, DefaultResourceLoader } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, DefaultResourceLoader } from "@diffexai/diffex"; const loader = new DefaultResourceLoader({ systemPromptOverride: () => "You are a helpful assistant.", @@ -587,7 +587,7 @@ The `edit` tool returns `details.diff` for Diffex's TUI display and `details.pat The `update_plan` tool returns `details.plan` with the full ordered checklist snapshot. ```typescript -import { createAgentSession } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession } from "@diffexai/diffex"; // Read-only mode const { session } = await createAgentSession({ @@ -625,7 +625,7 @@ const { session } = await createAgentSession({ When you pass a custom `cwd`, `createAgentSession()` builds selected built-in tools for that cwd. ```typescript -import { createAgentSession, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, SessionManager } from "@diffexai/diffex"; const cwd = "/path/to/project"; @@ -649,7 +649,7 @@ const { session } = await createAgentSession({ ```typescript import { Type } from "typebox"; -import { createAgentSession, defineTool } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, defineTool } from "@diffexai/diffex"; // Inline custom tool const myTool = defineTool({ @@ -684,7 +684,7 @@ If you pass `tools`, include each custom or extension tool name you want enabled Extensions are loaded by the `ResourceLoader`. `DefaultResourceLoader` discovers extensions from `~/.diffex/agent/extensions/`, `.diffex/extensions/`, and settings.json extension sources. ```typescript -import { createAgentSession, DefaultResourceLoader } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, DefaultResourceLoader } from "@diffexai/diffex"; const loader = new DefaultResourceLoader({ additionalExtensionPaths: ["/path/to/my-extension.ts"], @@ -706,7 +706,7 @@ Extensions can register tools, subscribe to events, add commands, and more. See **Named inline extensions:** By default, inline factories display as ``, ``, etc. in the startup Extensions list. To show a descriptive name instead, wrap the factory: ```typescript -import type { InlineExtension } from "@earendil-works/diffex-coding-agent"; +import type { InlineExtension } from "@diffexai/diffex"; const myProvider: InlineExtension = { name: "my-provider", @@ -727,7 +727,7 @@ This displays as `` instead of ``. Bare factory fu **Event Bus:** Extensions can communicate via `diffex.events`. Pass a shared `eventBus` to `DefaultResourceLoader` if you need to emit or listen from outside: ```typescript -import { createEventBus, DefaultResourceLoader } from "@earendil-works/diffex-coding-agent"; +import { createEventBus, DefaultResourceLoader } from "@diffexai/diffex"; const eventBus = createEventBus(); const loader = new DefaultResourceLoader({ @@ -747,7 +747,7 @@ import { createAgentSession, DefaultResourceLoader, type Skill, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const customSkill: Skill = { name: "my-skill", @@ -800,7 +800,7 @@ See [Harness Evolution](evolution.md) and [Skills](skills.md). ### Context Files ```typescript -import { createAgentSession, DefaultResourceLoader } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, DefaultResourceLoader } from "@diffexai/diffex"; const loader = new DefaultResourceLoader({ agentsFilesOverride: (current) => ({ @@ -824,7 +824,7 @@ import { createAgentSession, DefaultResourceLoader, type PromptTemplate, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const customCommand: PromptTemplate = { name: "deploy", @@ -859,7 +859,7 @@ import { createAgentSessionServices, getAgentDir, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; // In-memory (no persistence) const { session } = await createAgentSession({ @@ -953,7 +953,7 @@ sm.createBranchedSession(leafId); // Extract path to new file ### Settings Management ```typescript -import { createAgentSession, SettingsManager, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, SettingsManager, SessionManager } from "@diffexai/diffex"; // Default: loads from files (global + project merged) const { session } = await createAgentSession({ @@ -1009,7 +1009,7 @@ Use `DefaultResourceLoader` to discover extensions, skills, prompts, themes, and import { DefaultResourceLoader, getAgentDir, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const loader = new DefaultResourceLoader({ cwd, @@ -1029,7 +1029,7 @@ const contextFiles = loader.getAgentsFiles().agentsFiles; Use `createSkill()` for SDK-provided skills so the same identity and version rules apply: ```typescript -import { createSkill, createSyntheticSourceInfo } from "@earendil-works/diffex-coding-agent"; +import { createSkill, createSyntheticSourceInfo } from "@diffexai/diffex"; const skill = createSkill({ name: "review", @@ -1067,7 +1067,7 @@ interface LoadExtensionsResult { ## Complete Example ```typescript -import { getModel } from "@earendil-works/diffex-ai"; +import { getModel } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { createAgentSession, @@ -1076,7 +1076,7 @@ import { ModelRuntime, SessionManager, SettingsManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create({ authPath: "/custom/agent/auth.json", @@ -1157,7 +1157,7 @@ import { getAgentDir, InteractiveMode, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => { const services = await createAgentSessionServices({ cwd }); @@ -1197,7 +1197,7 @@ import { getAgentDir, runPrintMode, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => { const services = await createAgentSessionServices({ cwd }); @@ -1234,7 +1234,7 @@ import { getAgentDir, runRpcMode, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => { const services = await createAgentSessionServices({ cwd }); diff --git a/packages/coding-agent/docs/session-format.md b/packages/coding-agent/docs/session-format.md index 05ede29bd..dbdcffa03 100644 --- a/packages/coding-agent/docs/session-format.md +++ b/packages/coding-agent/docs/session-format.md @@ -34,7 +34,7 @@ Source on GitHub ([diffex](https://github.com/diffexai/diffex)): - [`packages/ai/src/types.ts`](https://github.com/diffexai/diffex/blob/main/packages/ai/src/types.ts) - Base message types (UserMessage, AssistantMessage, ToolResultMessage) - [`packages/agent/src/types.ts`](https://github.com/diffexai/diffex/blob/main/packages/agent/src/types.ts) - AgentMessage union type -For TypeScript definitions in your project, inspect `node_modules/@earendil-works/diffex-coding-agent/dist/` and `node_modules/@earendil-works/diffex-ai/dist/`. +For TypeScript definitions in your project, inspect `node_modules/@diffexai/diffex/dist/` and `node_modules/@diffexai/diffex-ai/dist/`. ## Message Types diff --git a/packages/coding-agent/docs/termux.md b/packages/coding-agent/docs/termux.md index 6b2939466..61dd6f439 100644 --- a/packages/coding-agent/docs/termux.md +++ b/packages/coding-agent/docs/termux.md @@ -17,7 +17,7 @@ pkg update && pkg upgrade pkg install nodejs termux-api git # Install Diffex -npm install -g --ignore-scripts @earendil-works/diffex-coding-agent +npm install -g --ignore-scripts @diffexai/diffex # Create config directory mkdir -p ~/.diffex/agent diff --git a/packages/coding-agent/docs/tui.md b/packages/coding-agent/docs/tui.md index e514daa8a..07aebd879 100644 --- a/packages/coding-agent/docs/tui.md +++ b/packages/coding-agent/docs/tui.md @@ -4,7 +4,7 @@ Extensions and custom tools can render custom TUI components for interactive user interfaces. This page covers the component system and available building blocks. -**Source:** [`@earendil-works/diffex-tui`](https://github.com/diffexai/diffex/tree/main/packages/tui) +**Source:** [`@diffexai/diffex-tui`](https://github.com/diffexai/diffex/tree/main/packages/tui) ## Component Interface @@ -33,7 +33,7 @@ The TUI appends a full SGR reset and OSC 8 reset at the end of each rendered lin Components that display a text cursor and need IME (Input Method Editor) support should implement the `Focusable` interface: ```typescript -import { CURSOR_MARKER, type Component, type Focusable } from "@earendil-works/diffex-tui"; +import { CURSOR_MARKER, type Component, type Focusable } from "@diffexai/diffex-tui"; class MyInput implements Component, Focusable { focused: boolean = false; // Set by TUI when focus changes @@ -59,7 +59,7 @@ The cursor remains hidden by default. This keeps the fake cursor rendering, whil When a container component (dialog, selector, etc.) contains an `Input` or `Editor` child, the container must implement `Focusable` and propagate the focus state to the child. Otherwise, the hardware cursor won't be positioned correctly for IME input. ```typescript -import { Container, type Focusable, Input } from "@earendil-works/diffex-tui"; +import { Container, type Focusable, Input } from "@diffexai/diffex-tui"; class SearchDialog extends Container implements Focusable { private searchInput: Input; @@ -201,10 +201,10 @@ See [overlay-qa-tests.ts](../examples/extensions/overlay-qa-tests.ts) for compre ## Built-in Components -Import from `@earendil-works/diffex-tui`: +Import from `@diffexai/diffex-tui`: ```typescript -import { Text, Box, Container, Spacer, Markdown } from "@earendil-works/diffex-tui"; +import { Text, Box, Container, Spacer, Markdown } from "@diffexai/diffex-tui"; ``` ### Text @@ -286,7 +286,7 @@ const image = new Image( Use `matchesKey()` for key detection: ```typescript -import { matchesKey, Key } from "@earendil-works/diffex-tui"; +import { matchesKey, Key } from "@diffexai/diffex-tui"; handleInput(data: string) { if (matchesKey(data, Key.up)) { @@ -312,7 +312,7 @@ handleInput(data: string) { **Critical:** Each line from `render()` must not exceed the `width` parameter. ```typescript -import { visibleWidth, truncateToWidth } from "@earendil-works/diffex-tui"; +import { visibleWidth, truncateToWidth } from "@diffexai/diffex-tui"; render(width: number): string[] { // Truncate long lines @@ -333,7 +333,7 @@ Example: Interactive selector import { matchesKey, Key, truncateToWidth, visibleWidth -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; class MySelector { private items: string[]; @@ -450,8 +450,8 @@ renderResult(result, options, theme, context) { **For Markdown**, use `getMarkdownTheme()`: ```typescript -import { getMarkdownTheme } from "@earendil-works/diffex-coding-agent"; -import { Markdown } from "@earendil-works/diffex-tui"; +import { getMarkdownTheme } from "@diffexai/diffex"; +import { Markdown } from "@diffexai/diffex-tui"; renderResult(result, options, theme, context) { const mdTheme = getMarkdownTheme(); @@ -612,12 +612,12 @@ These patterns cover the most common UI needs in extensions. **Copy these patter ### Pattern 1: Selection Dialog (SelectList) -For letting users pick from a list of options. Use `SelectList` from `@earendil-works/diffex-tui` with `DynamicBorder` for framing. +For letting users pick from a list of options. Use `SelectList` from `@diffexai/diffex-tui` with `DynamicBorder` for framing. ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { DynamicBorder } from "@earendil-works/diffex-coding-agent"; -import { Container, type SelectItem, SelectList, Text } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { DynamicBorder } from "@diffexai/diffex"; +import { Container, type SelectItem, SelectList, Text } from "@diffexai/diffex-tui"; diffex.registerCommand("pick", { handler: async (_args, ctx) => { @@ -675,7 +675,7 @@ diffex.registerCommand("pick", { For operations that take time and should be cancellable. `BorderedLoader` shows a spinner and handles escape to cancel. ```typescript -import { BorderedLoader } from "@earendil-works/diffex-coding-agent"; +import { BorderedLoader } from "@diffexai/diffex"; diffex.registerCommand("fetch", { handler: async (_args, ctx) => { @@ -704,11 +704,11 @@ diffex.registerCommand("fetch", { ### Pattern 3: Settings/Toggles (SettingsList) -For toggling multiple settings. Use `SettingsList` from `@earendil-works/diffex-tui` with `getSettingsListTheme()`. +For toggling multiple settings. Use `SettingsList` from `@diffexai/diffex-tui` with `getSettingsListTheme()`. ```typescript -import { getSettingsListTheme } from "@earendil-works/diffex-coding-agent"; -import { Container, type SettingItem, SettingsList, Text } from "@earendil-works/diffex-tui"; +import { getSettingsListTheme } from "@diffexai/diffex"; +import { Container, type SettingItem, SettingsList, Text } from "@diffexai/diffex-tui"; diffex.registerCommand("settings", { handler: async (_args, ctx) => { @@ -845,8 +845,8 @@ Token stats available via `ctx.sessionManager.getBranch()` and `ctx.model`. Replace the main input editor with a custom implementation. Useful for modal editing (vim), different keybindings (emacs), or specialized input handling. ```typescript -import { CustomEditor, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { matchesKey, truncateToWidth } from "@earendil-works/diffex-tui"; +import { CustomEditor, type ExtensionAPI } from "@diffexai/diffex"; +import { matchesKey, truncateToWidth } from "@diffexai/diffex-tui"; type Mode = "normal" | "insert"; diff --git a/packages/coding-agent/examples/extensions/README.md b/packages/coding-agent/examples/extensions/README.md index a3d0f17df..969f61ab1 100644 --- a/packages/coding-agent/examples/extensions/README.md +++ b/packages/coding-agent/examples/extensions/README.md @@ -141,7 +141,7 @@ cp permission-gate.ts ~/.diffex/agent/extensions/ See [docs/extensions.md](../../docs/extensions.md) for full documentation. ```typescript -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function (diffex: ExtensionAPI) { @@ -183,7 +183,7 @@ export default function (diffex: ExtensionAPI) { **Use StringEnum for string parameters** (required for Google API compatibility): ```typescript -import { StringEnum } from "@earendil-works/diffex-ai"; +import { StringEnum } from "@diffexai/diffex-ai"; // Good action: StringEnum(["list", "add"] as const) diff --git a/packages/coding-agent/examples/extensions/auto-commit-on-exit.ts b/packages/coding-agent/examples/extensions/auto-commit-on-exit.ts index 777fc35c0..214a71b3b 100644 --- a/packages/coding-agent/examples/extensions/auto-commit-on-exit.ts +++ b/packages/coding-agent/examples/extensions/auto-commit-on-exit.ts @@ -5,7 +5,7 @@ * Uses the last assistant message to generate a commit message. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("session_shutdown", async (_event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/bash-spawn-hook.ts b/packages/coding-agent/examples/extensions/bash-spawn-hook.ts index 0ee0a5eb5..90d35e4de 100644 --- a/packages/coding-agent/examples/extensions/bash-spawn-hook.ts +++ b/packages/coding-agent/examples/extensions/bash-spawn-hook.ts @@ -7,8 +7,8 @@ * diffex -e ./bash-spawn-hook.ts */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { createBashTool } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { createBashTool } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { const cwd = process.cwd(); diff --git a/packages/coding-agent/examples/extensions/bookmark.ts b/packages/coding-agent/examples/extensions/bookmark.ts index 2ece7f1f7..cdbf5299c 100644 --- a/packages/coding-agent/examples/extensions/bookmark.ts +++ b/packages/coding-agent/examples/extensions/bookmark.ts @@ -7,7 +7,7 @@ * Usage: /bookmark [label] - bookmark the last assistant message */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.registerCommand("bookmark", { diff --git a/packages/coding-agent/examples/extensions/border-status-editor.ts b/packages/coding-agent/examples/extensions/border-status-editor.ts index 96c9e6d15..f94e36e34 100644 --- a/packages/coding-agent/examples/extensions/border-status-editor.ts +++ b/packages/coding-agent/examples/extensions/border-status-editor.ts @@ -1,11 +1,6 @@ -import { - CustomEditor, - type ExtensionAPI, - type ExtensionContext, - type KeybindingsManager, -} from "@earendil-works/diffex-coding-agent"; -import type { Component, EditorTheme, TUI } from "@earendil-works/diffex-tui"; -import { truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import { CustomEditor, type ExtensionAPI, type ExtensionContext, type KeybindingsManager } from "@diffexai/diffex"; +import type { Component, EditorTheme, TUI } from "@diffexai/diffex-tui"; +import { truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; function fitBorder( left: string, diff --git a/packages/coding-agent/examples/extensions/built-in-tool-renderer.ts b/packages/coding-agent/examples/extensions/built-in-tool-renderer.ts index cb84b8adc..0a019847d 100644 --- a/packages/coding-agent/examples/extensions/built-in-tool-renderer.ts +++ b/packages/coding-agent/examples/extensions/built-in-tool-renderer.ts @@ -25,14 +25,9 @@ * diffex -e ./built-in-tool-renderer.ts */ -import type { - BashToolDetails, - EditToolDetails, - ExtensionAPI, - ReadToolDetails, -} from "@earendil-works/diffex-coding-agent"; -import { createBashTool, createEditTool, createReadTool, createWriteTool } from "@earendil-works/diffex-coding-agent"; -import { Text } from "@earendil-works/diffex-tui"; +import type { BashToolDetails, EditToolDetails, ExtensionAPI, ReadToolDetails } from "@diffexai/diffex"; +import { createBashTool, createEditTool, createReadTool, createWriteTool } from "@diffexai/diffex"; +import { Text } from "@diffexai/diffex-tui"; export default function (diffex: ExtensionAPI) { const cwd = process.cwd(); diff --git a/packages/coding-agent/examples/extensions/claude-rules.ts b/packages/coding-agent/examples/extensions/claude-rules.ts index 8dcece064..2079c1004 100644 --- a/packages/coding-agent/examples/extensions/claude-rules.ts +++ b/packages/coding-agent/examples/extensions/claude-rules.ts @@ -19,7 +19,7 @@ import * as fs from "node:fs"; import * as path from "node:path"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; /** * Recursively find all .md files in a directory diff --git a/packages/coding-agent/examples/extensions/commands.ts b/packages/coding-agent/examples/extensions/commands.ts index abae561c1..254c4b3b7 100644 --- a/packages/coding-agent/examples/extensions/commands.ts +++ b/packages/coding-agent/examples/extensions/commands.ts @@ -10,7 +10,7 @@ * 3. Use /commands extensions to filter by source */ -import type { ExtensionAPI, SlashCommandInfo } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, SlashCommandInfo } from "@diffexai/diffex"; export default function commandsExtension(diffex: ExtensionAPI) { diffex.registerCommand("commands", { diff --git a/packages/coding-agent/examples/extensions/confirm-destructive.ts b/packages/coding-agent/examples/extensions/confirm-destructive.ts index ae2e3b264..d65e9969e 100644 --- a/packages/coding-agent/examples/extensions/confirm-destructive.ts +++ b/packages/coding-agent/examples/extensions/confirm-destructive.ts @@ -5,7 +5,7 @@ * Demonstrates how to cancel session events using the before_* events. */ -import type { ExtensionAPI, SessionBeforeSwitchEvent, SessionMessageEntry } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, SessionBeforeSwitchEvent, SessionMessageEntry } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("session_before_switch", async (event: SessionBeforeSwitchEvent, ctx) => { diff --git a/packages/coding-agent/examples/extensions/custom-compaction.ts b/packages/coding-agent/examples/extensions/custom-compaction.ts index ca75cf78a..834af16bf 100644 --- a/packages/coding-agent/examples/extensions/custom-compaction.ts +++ b/packages/coding-agent/examples/extensions/custom-compaction.ts @@ -13,9 +13,9 @@ * diffex --extension examples/extensions/custom-compaction.ts */ -import { uuidv7 } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { convertToLlm, serializeConversation } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { convertToLlm, serializeConversation } from "@diffexai/diffex"; +import { uuidv7 } from "@diffexai/diffex-ai"; export default function (diffex: ExtensionAPI) { diffex.on("session_before_compact", async (event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/custom-footer.ts b/packages/coding-agent/examples/extensions/custom-footer.ts index b3393ac8a..b10aa5fd1 100644 --- a/packages/coding-agent/examples/extensions/custom-footer.ts +++ b/packages/coding-agent/examples/extensions/custom-footer.ts @@ -8,9 +8,9 @@ * Token stats come from ctx.sessionManager/ctx.model (already accessible). */ -import type { AssistantMessage } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; +import { truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; export default function (diffex: ExtensionAPI) { let enabled = false; diff --git a/packages/coding-agent/examples/extensions/custom-header.ts b/packages/coding-agent/examples/extensions/custom-header.ts index a8d0d219e..2f016879d 100644 --- a/packages/coding-agent/examples/extensions/custom-header.ts +++ b/packages/coding-agent/examples/extensions/custom-header.ts @@ -5,8 +5,8 @@ * (logo + keybinding hints) with a custom component showing the Diffex mascot. */ -import type { ExtensionAPI, Theme } from "@earendil-works/diffex-coding-agent"; -import { VERSION } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, Theme } from "@diffexai/diffex"; +import { VERSION } from "@diffexai/diffex"; // --- DIFFEX MASCOT --- // Based on the Diffex agent character diff --git a/packages/coding-agent/examples/extensions/custom-provider-anthropic/index.ts b/packages/coding-agent/examples/extensions/custom-provider-anthropic/index.ts index c715bc0b9..bd84dbb24 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-anthropic/index.ts +++ b/packages/coding-agent/examples/extensions/custom-provider-anthropic/index.ts @@ -23,6 +23,7 @@ import Anthropic from "@anthropic-ai/sdk"; import type { ContentBlockParam, MessageCreateParamsStreaming } from "@anthropic-ai/sdk/resources/messages.js"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { type Api, type AssistantMessage, @@ -42,8 +43,7 @@ import { type Tool, type ToolCall, type ToolResultMessage, -} from "@earendil-works/diffex-ai"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex-ai"; // ============================================================================= // OAuth implementation adapted for the legacy extension compatibility interface. diff --git a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts index 584d6f27e..c6839ed38 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +++ b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts @@ -9,6 +9,7 @@ * # Then /login gitlab-duo, or set GITLAB_TOKEN=glpat-... */ +import type { ExtensionAPI } from "@diffexai/diffex"; import { type Api, type AssistantMessageEventStream, @@ -21,8 +22,7 @@ import { openAIResponsesApi, type SimpleStreamOptions, type ThinkingLevelMap, -} from "@earendil-works/diffex-ai/compat"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex-ai/compat"; // ============================================================================= // Constants diff --git a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts index 4f6091a46..48c5dc41e 100644 --- a/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts +++ b/packages/coding-agent/examples/extensions/custom-provider-gitlab-duo/test.ts @@ -8,13 +8,7 @@ * npx tsx test.ts claude-sonnet-4-5-20250929 --thinking */ -import { - type Api, - type Context, - type Model, - registerApiProvider, - streamSimple, -} from "@earendil-works/diffex-ai/compat"; +import { type Api, type Context, type Model, registerApiProvider, streamSimple } from "@diffexai/diffex-ai/compat"; import { readFileSync } from "fs"; import { getAgentDir } from "packages/coding-agent/src/config.js"; import { join } from "path"; diff --git a/packages/coding-agent/examples/extensions/dirty-repo-guard.ts b/packages/coding-agent/examples/extensions/dirty-repo-guard.ts index f8a43b9d8..7e25ba5ef 100644 --- a/packages/coding-agent/examples/extensions/dirty-repo-guard.ts +++ b/packages/coding-agent/examples/extensions/dirty-repo-guard.ts @@ -5,7 +5,7 @@ * Useful to ensure work is committed before switching context. */ -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; async function checkDirtyRepo( diffex: ExtensionAPI, diff --git a/packages/coding-agent/examples/extensions/doom-overlay/doom-component.ts b/packages/coding-agent/examples/extensions/doom-overlay/doom-component.ts index 6a9473ede..e9042cdd4 100644 --- a/packages/coding-agent/examples/extensions/doom-overlay/doom-component.ts +++ b/packages/coding-agent/examples/extensions/doom-overlay/doom-component.ts @@ -5,8 +5,8 @@ * Height is calculated from width to maintain DOOM's aspect ratio. */ -import type { Component } from "@earendil-works/diffex-tui"; -import { isKeyRelease, type TUI } from "@earendil-works/diffex-tui"; +import type { Component } from "@diffexai/diffex-tui"; +import { isKeyRelease, type TUI } from "@diffexai/diffex-tui"; import type { DoomEngine } from "./doom-engine.ts"; import { DoomKeys, mapKeyToDoom } from "./doom-keys.ts"; diff --git a/packages/coding-agent/examples/extensions/doom-overlay/doom-keys.ts b/packages/coding-agent/examples/extensions/doom-overlay/doom-keys.ts index 773b28297..26e9d6c5a 100644 --- a/packages/coding-agent/examples/extensions/doom-overlay/doom-keys.ts +++ b/packages/coding-agent/examples/extensions/doom-overlay/doom-keys.ts @@ -34,7 +34,7 @@ export const DoomKeys = { KEY_RALT: 0x80 + 0x38, } as const; -import { Key, matchesKey, parseKey } from "@earendil-works/diffex-tui"; +import { Key, matchesKey, parseKey } from "@diffexai/diffex-tui"; /** * Map terminal key input to DOOM key codes diff --git a/packages/coding-agent/examples/extensions/doom-overlay/index.ts b/packages/coding-agent/examples/extensions/doom-overlay/index.ts index 88dc3a4ba..1dff52f21 100644 --- a/packages/coding-agent/examples/extensions/doom-overlay/index.ts +++ b/packages/coding-agent/examples/extensions/doom-overlay/index.ts @@ -9,7 +9,7 @@ * This demonstrates that overlays can handle real-time game rendering at 35 FPS. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { DoomOverlayComponent } from "./doom-component.ts"; import { DoomEngine } from "./doom-engine.ts"; import { ensureWadFile } from "./wad-finder.ts"; diff --git a/packages/coding-agent/examples/extensions/dynamic-resources/dynamic.json b/packages/coding-agent/examples/extensions/dynamic-resources/dynamic.json index e7b01a859..914613b2f 100644 --- a/packages/coding-agent/examples/extensions/dynamic-resources/dynamic.json +++ b/packages/coding-agent/examples/extensions/dynamic-resources/dynamic.json @@ -1,5 +1,5 @@ { - "$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json", + "$schema": "https://raw.githubusercontent.com/diffexai/diffex/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json", "name": "dynamic-resources", "vars": { "cyan": "#00d7ff", diff --git a/packages/coding-agent/examples/extensions/dynamic-resources/index.ts b/packages/coding-agent/examples/extensions/dynamic-resources/index.ts index 6c083282f..77f43a751 100644 --- a/packages/coding-agent/examples/extensions/dynamic-resources/index.ts +++ b/packages/coding-agent/examples/extensions/dynamic-resources/index.ts @@ -1,6 +1,6 @@ import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; const baseDir = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/coding-agent/examples/extensions/dynamic-tools.ts b/packages/coding-agent/examples/extensions/dynamic-tools.ts index a3d583e9d..c74016b11 100644 --- a/packages/coding-agent/examples/extensions/dynamic-tools.ts +++ b/packages/coding-agent/examples/extensions/dynamic-tools.ts @@ -7,7 +7,7 @@ * - Registers additional tools at runtime via /add-echo-tool */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; const ECHO_PARAMS = Type.Object({ diff --git a/packages/coding-agent/examples/extensions/entry-renderer.ts b/packages/coding-agent/examples/extensions/entry-renderer.ts index 1815587f6..fd198246c 100644 --- a/packages/coding-agent/examples/extensions/entry-renderer.ts +++ b/packages/coding-agent/examples/extensions/entry-renderer.ts @@ -8,8 +8,8 @@ * Usage: /status-card [message] */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { Box, Text } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { Box, Text } from "@diffexai/diffex-tui"; interface StatusCardData { message: string; diff --git a/packages/coding-agent/examples/extensions/event-bus.ts b/packages/coding-agent/examples/extensions/event-bus.ts index bef4db3a4..33fbd10b8 100644 --- a/packages/coding-agent/examples/extensions/event-bus.ts +++ b/packages/coding-agent/examples/extensions/event-bus.ts @@ -7,7 +7,7 @@ * Usage: /emit [event-name] [data] - emit an event on the bus */ -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { // Store ctx for use in event handler diff --git a/packages/coding-agent/examples/extensions/file-trigger.ts b/packages/coding-agent/examples/extensions/file-trigger.ts index a8abc0c4b..fd3b17262 100644 --- a/packages/coding-agent/examples/extensions/file-trigger.ts +++ b/packages/coding-agent/examples/extensions/file-trigger.ts @@ -9,7 +9,7 @@ */ import * as fs from "node:fs"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("session_start", async (_event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/git-checkpoint.ts b/packages/coding-agent/examples/extensions/git-checkpoint.ts index f8ff760f3..eb4ac450a 100644 --- a/packages/coding-agent/examples/extensions/git-checkpoint.ts +++ b/packages/coding-agent/examples/extensions/git-checkpoint.ts @@ -5,7 +5,7 @@ * When forking, offers to restore code to that point in history. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { const checkpoints = new Map(); diff --git a/packages/coding-agent/examples/extensions/git-merge-and-resolve.ts b/packages/coding-agent/examples/extensions/git-merge-and-resolve.ts index e513940fd..9ec36cbfe 100644 --- a/packages/coding-agent/examples/extensions/git-merge-and-resolve.ts +++ b/packages/coding-agent/examples/extensions/git-merge-and-resolve.ts @@ -14,7 +14,7 @@ import { createReadStream } from "node:fs"; import { join } from "node:path"; import { createInterface } from "node:readline"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; interface ConflictBlock { file: string; diff --git a/packages/coding-agent/examples/extensions/github-issue-autocomplete.ts b/packages/coding-agent/examples/extensions/github-issue-autocomplete.ts index 7d51e26a9..1c8b6493d 100644 --- a/packages/coding-agent/examples/extensions/github-issue-autocomplete.ts +++ b/packages/coding-agent/examples/extensions/github-issue-autocomplete.ts @@ -1,13 +1,13 @@ // Requires GitHub CLI (`gh`) and a GitHub repository checkout. // Preloads the latest open issues once per session, then filters them locally for fast `#...` completion. -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { type AutocompleteItem, type AutocompleteProvider, type AutocompleteSuggestions, fuzzyFilter, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; type GitHubIssue = { number: number; diff --git a/packages/coding-agent/examples/extensions/gondolin/index.ts b/packages/coding-agent/examples/extensions/gondolin/index.ts index 98dfe9783..268a320f9 100644 --- a/packages/coding-agent/examples/extensions/gondolin/index.ts +++ b/packages/coding-agent/examples/extensions/gondolin/index.ts @@ -20,7 +20,7 @@ */ import path from "node:path"; -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; import { type BashOperations, createBashTool, @@ -41,7 +41,7 @@ import { truncateHead, truncateLine, type WriteOperations, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; import { RealFSProvider, VM } from "@earendil-works/gondolin"; const GUEST_WORKSPACE = "/workspace"; diff --git a/packages/coding-agent/examples/extensions/handoff.ts b/packages/coding-agent/examples/extensions/handoff.ts index e6c0f9b98..385c9ecdb 100644 --- a/packages/coding-agent/examples/extensions/handoff.ts +++ b/packages/coding-agent/examples/extensions/handoff.ts @@ -12,10 +12,10 @@ * The generated prompt appears as a draft in the editor for review/editing. */ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import { type Message, uuidv7 } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI, SessionEntry } from "@earendil-works/diffex-coding-agent"; -import { BorderedLoader, convertToLlm, serializeConversation } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, SessionEntry } from "@diffexai/diffex"; +import { BorderedLoader, convertToLlm, serializeConversation } from "@diffexai/diffex"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import { type Message, uuidv7 } from "@diffexai/diffex-ai"; const SYSTEM_PROMPT = `You are a context transfer assistant. Given a conversation history and the user's goal for a new thread, generate a focused prompt that: diff --git a/packages/coding-agent/examples/extensions/hello.ts b/packages/coding-agent/examples/extensions/hello.ts index a09f31771..9c19c7355 100644 --- a/packages/coding-agent/examples/extensions/hello.ts +++ b/packages/coding-agent/examples/extensions/hello.ts @@ -2,8 +2,8 @@ * Hello Tool - Minimal custom tool example */ -import { Type } from "@earendil-works/diffex-ai"; -import { defineTool, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import { defineTool, type ExtensionAPI } from "@diffexai/diffex"; +import { Type } from "@diffexai/diffex-ai"; const helloTool = defineTool({ name: "hello", diff --git a/packages/coding-agent/examples/extensions/hidden-thinking-label.ts b/packages/coding-agent/examples/extensions/hidden-thinking-label.ts index 101a57c4c..7c507e022 100644 --- a/packages/coding-agent/examples/extensions/hidden-thinking-label.ts +++ b/packages/coding-agent/examples/extensions/hidden-thinking-label.ts @@ -18,7 +18,7 @@ * /thinking-label Reset to the default label */ -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; const DEFAULT_LABEL = "Pondering..."; diff --git a/packages/coding-agent/examples/extensions/inline-bash.ts b/packages/coding-agent/examples/extensions/inline-bash.ts index 62450e780..794b28efc 100644 --- a/packages/coding-agent/examples/extensions/inline-bash.ts +++ b/packages/coding-agent/examples/extensions/inline-bash.ts @@ -14,7 +14,7 @@ * * Note: Regular !command syntax (whole-line bash) is preserved and works as before. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { const PATTERN = /!\{([^}]+)\}/g; diff --git a/packages/coding-agent/examples/extensions/input-transform-streaming.ts b/packages/coding-agent/examples/extensions/input-transform-streaming.ts index 05178a8fc..2853cb574 100644 --- a/packages/coding-agent/examples/extensions/input-transform-streaming.ts +++ b/packages/coding-agent/examples/extensions/input-transform-streaming.ts @@ -11,7 +11,7 @@ * Start Diffex with this extension: * diffex -e ./examples/extensions/input-transform-streaming.ts */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; const TRIGGER = /\b(changes?|diff|modified)\b/i; diff --git a/packages/coding-agent/examples/extensions/input-transform.ts b/packages/coding-agent/examples/extensions/input-transform.ts index ec103fcdf..126d9dcf9 100644 --- a/packages/coding-agent/examples/extensions/input-transform.ts +++ b/packages/coding-agent/examples/extensions/input-transform.ts @@ -9,7 +9,7 @@ * ping → "pong" (instant, no LLM) * time → current time (instant, no LLM) */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("input", async (event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/interactive-shell.ts b/packages/coding-agent/examples/extensions/interactive-shell.ts index 23a95f232..0077813a9 100644 --- a/packages/coding-agent/examples/extensions/interactive-shell.ts +++ b/packages/coding-agent/examples/extensions/interactive-shell.ts @@ -21,7 +21,7 @@ */ import { spawnSync } from "node:child_process"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; // Default interactive commands - editors, pagers, git ops, TUIs const DEFAULT_INTERACTIVE_COMMANDS = [ diff --git a/packages/coding-agent/examples/extensions/kimi-deferred-tools.ts b/packages/coding-agent/examples/extensions/kimi-deferred-tools.ts index d11cb57da..a8b712861 100644 --- a/packages/coding-agent/examples/extensions/kimi-deferred-tools.ts +++ b/packages/coding-agent/examples/extensions/kimi-deferred-tools.ts @@ -5,7 +5,7 @@ * example prompt: Use the available tools to calculate 100 + 500. Do not calculate it yourself. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; function calculate(_expr: string): string { diff --git a/packages/coding-agent/examples/extensions/mac-system-theme.ts b/packages/coding-agent/examples/extensions/mac-system-theme.ts index dd3221ac4..aed7c2a87 100644 --- a/packages/coding-agent/examples/extensions/mac-system-theme.ts +++ b/packages/coding-agent/examples/extensions/mac-system-theme.ts @@ -7,7 +7,7 @@ import { exec } from "node:child_process"; import { promisify } from "node:util"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; const execAsync = promisify(exec); diff --git a/packages/coding-agent/examples/extensions/message-renderer.ts b/packages/coding-agent/examples/extensions/message-renderer.ts index 30fcadfc1..3139a5d40 100644 --- a/packages/coding-agent/examples/extensions/message-renderer.ts +++ b/packages/coding-agent/examples/extensions/message-renderer.ts @@ -7,8 +7,8 @@ * Usage: /status [message] - sends a status message with custom rendering */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { Box, Text } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { Box, Text } from "@diffexai/diffex-tui"; export default function (diffex: ExtensionAPI) { // Register custom renderer for "status-update" messages diff --git a/packages/coding-agent/examples/extensions/minimal-mode.ts b/packages/coding-agent/examples/extensions/minimal-mode.ts index 99fbfb613..4928d2788 100644 --- a/packages/coding-agent/examples/extensions/minimal-mode.ts +++ b/packages/coding-agent/examples/extensions/minimal-mode.ts @@ -16,7 +16,7 @@ * Then use ctrl+o to toggle between minimal (collapsed) and full (expanded) views. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { createBashTool, createEditTool, @@ -25,8 +25,8 @@ import { createLsTool, createReadTool, createWriteTool, -} from "@earendil-works/diffex-coding-agent"; -import { Text } from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex"; +import { Text } from "@diffexai/diffex-tui"; import { homedir } from "os"; /** diff --git a/packages/coding-agent/examples/extensions/modal-editor.ts b/packages/coding-agent/examples/extensions/modal-editor.ts index 77c4336e0..319cce813 100644 --- a/packages/coding-agent/examples/extensions/modal-editor.ts +++ b/packages/coding-agent/examples/extensions/modal-editor.ts @@ -9,8 +9,8 @@ * - ctrl+c, ctrl+d, etc. work in both modes */ -import { CustomEditor, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { matchesKey, truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import { CustomEditor, type ExtensionAPI } from "@diffexai/diffex"; +import { matchesKey, truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; // Normal mode key mappings: key -> escape sequence (or null for mode switch) const NORMAL_KEYS: Record = { diff --git a/packages/coding-agent/examples/extensions/model-status.ts b/packages/coding-agent/examples/extensions/model-status.ts index f74ac4eb4..b6516e295 100644 --- a/packages/coding-agent/examples/extensions/model-status.ts +++ b/packages/coding-agent/examples/extensions/model-status.ts @@ -7,7 +7,7 @@ * Usage: diffex -e ./model-status.ts */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("model_select", async (event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/notify.ts b/packages/coding-agent/examples/extensions/notify.ts index 8af321a86..4a445f844 100644 --- a/packages/coding-agent/examples/extensions/notify.ts +++ b/packages/coding-agent/examples/extensions/notify.ts @@ -8,7 +8,7 @@ * - Windows toast: Windows Terminal (WSL) */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; function windowsToastScript(title: string, body: string): string { const type = "Windows.UI.Notifications"; diff --git a/packages/coding-agent/examples/extensions/overlay-qa-tests.ts b/packages/coding-agent/examples/extensions/overlay-qa-tests.ts index 537cf68bd..dcb9b338c 100644 --- a/packages/coding-agent/examples/extensions/overlay-qa-tests.ts +++ b/packages/coding-agent/examples/extensions/overlay-qa-tests.ts @@ -19,9 +19,9 @@ * /overlay-streaming - Multiple input panels with simulated streaming (Tab to cycle focus) */ -import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@earendil-works/diffex-coding-agent"; -import type { Component, OverlayAnchor, OverlayHandle, OverlayOptions, TUI } from "@earendil-works/diffex-tui"; -import { Input, matchesKey, truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@diffexai/diffex"; +import type { Component, OverlayAnchor, OverlayHandle, OverlayOptions, TUI } from "@diffexai/diffex-tui"; +import { Input, matchesKey, truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; import { spawn } from "child_process"; // Global handle for toggle demo (in real code, use a more elegant pattern) diff --git a/packages/coding-agent/examples/extensions/overlay-test.ts b/packages/coding-agent/examples/extensions/overlay-test.ts index 255e491b0..7e26c698a 100644 --- a/packages/coding-agent/examples/extensions/overlay-test.ts +++ b/packages/coding-agent/examples/extensions/overlay-test.ts @@ -8,8 +8,8 @@ * - Edge case tests (wide chars, styled text, emoji) */ -import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@earendil-works/diffex-coding-agent"; -import { CURSOR_MARKER, type Focusable, matchesKey, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionCommandContext, Theme } from "@diffexai/diffex"; +import { CURSOR_MARKER, type Focusable, matchesKey, visibleWidth } from "@diffexai/diffex-tui"; export default function (diffex: ExtensionAPI) { diffex.registerCommand("overlay-test", { diff --git a/packages/coding-agent/examples/extensions/permission-gate.ts b/packages/coding-agent/examples/extensions/permission-gate.ts index 96c479ae1..e9de1511a 100644 --- a/packages/coding-agent/examples/extensions/permission-gate.ts +++ b/packages/coding-agent/examples/extensions/permission-gate.ts @@ -5,7 +5,7 @@ * Patterns checked: rm -rf, sudo, chmod/chown 777 */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { const dangerousPatterns = [/\brm\s+(-rf?|--recursive)/i, /\bsudo\b/i, /\b(chmod|chown)\b.*777/i]; diff --git a/packages/coding-agent/examples/extensions/pirate.ts b/packages/coding-agent/examples/extensions/pirate.ts index ca8e8c728..54d935752 100644 --- a/packages/coding-agent/examples/extensions/pirate.ts +++ b/packages/coding-agent/examples/extensions/pirate.ts @@ -10,7 +10,7 @@ * 3. When enabled, the agent will respond like a pirate */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function pirateExtension(diffex: ExtensionAPI) { let pirateMode = false; diff --git a/packages/coding-agent/examples/extensions/preset.ts b/packages/coding-agent/examples/extensions/preset.ts index 628b64aa2..5d1b6ff47 100644 --- a/packages/coding-agent/examples/extensions/preset.ts +++ b/packages/coding-agent/examples/extensions/preset.ts @@ -40,10 +40,10 @@ import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; -import type { Api, Model } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; -import { CONFIG_DIR_NAME, DynamicBorder, getAgentDir } from "@earendil-works/diffex-coding-agent"; -import { Container, Key, type SelectItem, SelectList, Text } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; +import { CONFIG_DIR_NAME, DynamicBorder, getAgentDir } from "@diffexai/diffex"; +import type { Api, Model } from "@diffexai/diffex-ai"; +import { Container, Key, type SelectItem, SelectList, Text } from "@diffexai/diffex-tui"; // Preset configuration interface Preset { diff --git a/packages/coding-agent/examples/extensions/project-trust.ts b/packages/coding-agent/examples/extensions/project-trust.ts index 657db70ae..22e565d2b 100644 --- a/packages/coding-agent/examples/extensions/project-trust.ts +++ b/packages/coding-agent/examples/extensions/project-trust.ts @@ -13,7 +13,7 @@ * Try it in a project containing .diffex, AGENTS.md/CLAUDE.md, or .agents/skills. */ -import type { ExtensionAPI, ProjectTrustEventResult } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ProjectTrustEventResult } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { let loadCount = 0; diff --git a/packages/coding-agent/examples/extensions/prompt-customizer.ts b/packages/coding-agent/examples/extensions/prompt-customizer.ts index 72aef2c66..514693174 100644 --- a/packages/coding-agent/examples/extensions/prompt-customizer.ts +++ b/packages/coding-agent/examples/extensions/prompt-customizer.ts @@ -12,7 +12,7 @@ * 2. Use the extension — it automatically adapts to your active tools and skills */ -import type { BuildSystemPromptOptions, ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { BuildSystemPromptOptions, ExtensionAPI } from "@diffexai/diffex"; /** * Adds tool-specific guidance that adapts to the active tool set. diff --git a/packages/coding-agent/examples/extensions/protected-paths.ts b/packages/coding-agent/examples/extensions/protected-paths.ts index de224bcd4..240aba982 100644 --- a/packages/coding-agent/examples/extensions/protected-paths.ts +++ b/packages/coding-agent/examples/extensions/protected-paths.ts @@ -5,7 +5,7 @@ * Useful for preventing accidental modifications to sensitive files. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { const protectedPaths = [".env", ".git/", "node_modules/"]; diff --git a/packages/coding-agent/examples/extensions/provider-payload.ts b/packages/coding-agent/examples/extensions/provider-payload.ts index 2b852a22f..60e72b4b4 100644 --- a/packages/coding-agent/examples/extensions/provider-payload.ts +++ b/packages/coding-agent/examples/extensions/provider-payload.ts @@ -1,6 +1,6 @@ import { appendFileSync } from "node:fs"; import { join } from "node:path"; -import { CONFIG_DIR_NAME, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import { CONFIG_DIR_NAME, type ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("before_provider_request", (event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/qna.ts b/packages/coding-agent/examples/extensions/qna.ts index 9c7eaf21c..308d2a5cd 100644 --- a/packages/coding-agent/examples/extensions/qna.ts +++ b/packages/coding-agent/examples/extensions/qna.ts @@ -7,9 +7,9 @@ * 3. Loads the result into the editor for user to fill in answers */ -import type { UserMessage } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { BorderedLoader } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { BorderedLoader } from "@diffexai/diffex"; +import type { UserMessage } from "@diffexai/diffex-ai"; const SYSTEM_PROMPT = `You are a question extractor. Given text from a conversation, extract any questions that need answering and format them for the user to fill in. diff --git a/packages/coding-agent/examples/extensions/question.ts b/packages/coding-agent/examples/extensions/question.ts index 82f9075a1..f173a514e 100644 --- a/packages/coding-agent/examples/extensions/question.ts +++ b/packages/coding-agent/examples/extensions/question.ts @@ -4,16 +4,8 @@ * Escape in editor returns to options, Escape in options cancels */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { - Editor, - type EditorTheme, - Key, - matchesKey, - Text, - visibleWidth, - wrapTextWithAnsi, -} from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { Editor, type EditorTheme, Key, matchesKey, Text, visibleWidth, wrapTextWithAnsi } from "@diffexai/diffex-tui"; import { Type } from "typebox"; interface OptionWithDesc { diff --git a/packages/coding-agent/examples/extensions/questionnaire.ts b/packages/coding-agent/examples/extensions/questionnaire.ts index 8e9616908..ed361040f 100644 --- a/packages/coding-agent/examples/extensions/questionnaire.ts +++ b/packages/coding-agent/examples/extensions/questionnaire.ts @@ -5,16 +5,8 @@ * Multiple questions: tab bar navigation between questions */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { - Editor, - type EditorTheme, - Key, - matchesKey, - Text, - visibleWidth, - wrapTextWithAnsi, -} from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { Editor, type EditorTheme, Key, matchesKey, Text, visibleWidth, wrapTextWithAnsi } from "@diffexai/diffex-tui"; import { Type } from "typebox"; // Types diff --git a/packages/coding-agent/examples/extensions/rainbow-editor.ts b/packages/coding-agent/examples/extensions/rainbow-editor.ts index 7014ecbf3..ee1736eb5 100644 --- a/packages/coding-agent/examples/extensions/rainbow-editor.ts +++ b/packages/coding-agent/examples/extensions/rainbow-editor.ts @@ -4,7 +4,7 @@ * Usage: diffex --extension ./examples/extensions/rainbow-editor.ts */ -import { CustomEditor, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import { CustomEditor, type ExtensionAPI } from "@diffexai/diffex"; // Base colors (coral → yellow → green → teal → blue → purple → pink) const COLORS: [number, number, number][] = [ diff --git a/packages/coding-agent/examples/extensions/reload-runtime.ts b/packages/coding-agent/examples/extensions/reload-runtime.ts index 0e054684f..baca95faf 100644 --- a/packages/coding-agent/examples/extensions/reload-runtime.ts +++ b/packages/coding-agent/examples/extensions/reload-runtime.ts @@ -5,7 +5,7 @@ * tool that queues a follow-up command to trigger reload. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function (diffex: ExtensionAPI) { diff --git a/packages/coding-agent/examples/extensions/rpc-demo.ts b/packages/coding-agent/examples/extensions/rpc-demo.ts index 271aaccb2..c6f435712 100644 --- a/packages/coding-agent/examples/extensions/rpc-demo.ts +++ b/packages/coding-agent/examples/extensions/rpc-demo.ts @@ -17,7 +17,7 @@ * - setEditorText() - via /rpc-prefill command */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { let turnCount = 0; diff --git a/packages/coding-agent/examples/extensions/sandbox/index.ts b/packages/coding-agent/examples/extensions/sandbox/index.ts index 79e3b3e3f..3f0b8c937 100644 --- a/packages/coding-agent/examples/extensions/sandbox/index.ts +++ b/packages/coding-agent/examples/extensions/sandbox/index.ts @@ -45,8 +45,8 @@ import { spawn } from "node:child_process"; import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; import { SandboxManager, type SandboxRuntimeConfig } from "@anthropic-ai/sandbox-runtime"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { type BashOperations, CONFIG_DIR_NAME, createBashTool, getAgentDir } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { type BashOperations, CONFIG_DIR_NAME, createBashTool, getAgentDir } from "@diffexai/diffex"; interface SandboxConfig extends SandboxRuntimeConfig { enabled?: boolean; diff --git a/packages/coding-agent/examples/extensions/send-user-message.ts b/packages/coding-agent/examples/extensions/send-user-message.ts index e135e854b..ca33a8111 100644 --- a/packages/coding-agent/examples/extensions/send-user-message.ts +++ b/packages/coding-agent/examples/extensions/send-user-message.ts @@ -11,7 +11,7 @@ * /followup And then? - Sends while streaming with followUp delivery */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { // Simple command that sends a user message diff --git a/packages/coding-agent/examples/extensions/session-name.ts b/packages/coding-agent/examples/extensions/session-name.ts index f84debe84..eaf436ab1 100644 --- a/packages/coding-agent/examples/extensions/session-name.ts +++ b/packages/coding-agent/examples/extensions/session-name.ts @@ -7,7 +7,7 @@ * Usage: /session-name [name] - set or show session name */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.registerCommand("session-name", { diff --git a/packages/coding-agent/examples/extensions/shutdown-command.ts b/packages/coding-agent/examples/extensions/shutdown-command.ts index 543bcbd57..0dd7a97a9 100644 --- a/packages/coding-agent/examples/extensions/shutdown-command.ts +++ b/packages/coding-agent/examples/extensions/shutdown-command.ts @@ -5,7 +5,7 @@ * Demonstrates how extensions can use ctx.shutdown() to exit Diffex cleanly. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function (diffex: ExtensionAPI) { diff --git a/packages/coding-agent/examples/extensions/snake.ts b/packages/coding-agent/examples/extensions/snake.ts index 616dd8dde..c8405fdaa 100644 --- a/packages/coding-agent/examples/extensions/snake.ts +++ b/packages/coding-agent/examples/extensions/snake.ts @@ -2,8 +2,8 @@ * Snake game extension - play snake with /snake command */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { matchesKey, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { matchesKey, visibleWidth } from "@diffexai/diffex-tui"; const GAME_WIDTH = 40; const GAME_HEIGHT = 15; diff --git a/packages/coding-agent/examples/extensions/space-invaders.ts b/packages/coding-agent/examples/extensions/space-invaders.ts index 7230e50a2..dad02ded8 100644 --- a/packages/coding-agent/examples/extensions/space-invaders.ts +++ b/packages/coding-agent/examples/extensions/space-invaders.ts @@ -3,8 +3,8 @@ * Uses Kitty keyboard protocol for smooth movement (press/release detection) */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { isKeyRelease, Key, matchesKey, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import { isKeyRelease, Key, matchesKey, visibleWidth } from "@diffexai/diffex-tui"; const GAME_WIDTH = 60; const GAME_HEIGHT = 24; diff --git a/packages/coding-agent/examples/extensions/ssh.ts b/packages/coding-agent/examples/extensions/ssh.ts index 5cbce5251..16abab5d7 100644 --- a/packages/coding-agent/examples/extensions/ssh.ts +++ b/packages/coding-agent/examples/extensions/ssh.ts @@ -14,7 +14,7 @@ */ import { spawn } from "node:child_process"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { type BashOperations, createBashTool, @@ -24,7 +24,7 @@ import { type EditOperations, type ReadOperations, type WriteOperations, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; function sshExec(remote: string, command: string): Promise { return new Promise((resolve, reject) => { diff --git a/packages/coding-agent/examples/extensions/status-line.ts b/packages/coding-agent/examples/extensions/status-line.ts index 58809b5e3..5d1c2d3ea 100644 --- a/packages/coding-agent/examples/extensions/status-line.ts +++ b/packages/coding-agent/examples/extensions/status-line.ts @@ -5,7 +5,7 @@ * Shows turn progress with themed colors. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { let turnCount = 0; diff --git a/packages/coding-agent/examples/extensions/structured-output.ts b/packages/coding-agent/examples/extensions/structured-output.ts index 9bbce24fe..2cacd2d34 100644 --- a/packages/coding-agent/examples/extensions/structured-output.ts +++ b/packages/coding-agent/examples/extensions/structured-output.ts @@ -5,8 +5,8 @@ * without paying for an extra follow-up LLM turn. */ -import { defineTool, type ExtensionAPI } from "@earendil-works/diffex-coding-agent"; -import { Text } from "@earendil-works/diffex-tui"; +import { defineTool, type ExtensionAPI } from "@diffexai/diffex"; +import { Text } from "@diffexai/diffex-tui"; import { Type } from "typebox"; interface StructuredOutputDetails { diff --git a/packages/coding-agent/examples/extensions/subagent/agents.ts b/packages/coding-agent/examples/extensions/subagent/agents.ts index 02cf728c0..27c74a605 100644 --- a/packages/coding-agent/examples/extensions/subagent/agents.ts +++ b/packages/coding-agent/examples/extensions/subagent/agents.ts @@ -4,7 +4,7 @@ import * as fs from "node:fs"; import * as path from "node:path"; -import { CONFIG_DIR_NAME, getAgentDir, parseFrontmatter } from "@earendil-works/diffex-coding-agent"; +import { CONFIG_DIR_NAME, getAgentDir, parseFrontmatter } from "@diffexai/diffex"; export type AgentScope = "user" | "project" | "both"; diff --git a/packages/coding-agent/examples/extensions/subagent/index.ts b/packages/coding-agent/examples/extensions/subagent/index.ts index 65011293d..e86a1332a 100644 --- a/packages/coding-agent/examples/extensions/subagent/index.ts +++ b/packages/coding-agent/examples/extensions/subagent/index.ts @@ -16,17 +16,17 @@ import { spawn } from "node:child_process"; import * as fs from "node:fs"; import * as os from "node:os"; import * as path from "node:path"; -import type { AgentToolResult } from "@earendil-works/diffex-agent-core"; -import type { Message } from "@earendil-works/diffex-ai"; -import { StringEnum } from "@earendil-works/diffex-ai"; import { CONFIG_DIR_NAME, type ExtensionAPI, getAgentDir, getMarkdownTheme, withFileMutationQueue, -} from "@earendil-works/diffex-coding-agent"; -import { Container, Markdown, Spacer, Text } from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex"; +import type { AgentToolResult } from "@diffexai/diffex-agent-core"; +import type { Message } from "@diffexai/diffex-ai"; +import { StringEnum } from "@diffexai/diffex-ai"; +import { Container, Markdown, Spacer, Text } from "@diffexai/diffex-tui"; import { Type } from "typebox"; import { type AgentConfig, type AgentScope, discoverAgents } from "./agents.ts"; diff --git a/packages/coding-agent/examples/extensions/summarize.ts b/packages/coding-agent/examples/extensions/summarize.ts index f26d03ab8..d0f3dca20 100644 --- a/packages/coding-agent/examples/extensions/summarize.ts +++ b/packages/coding-agent/examples/extensions/summarize.ts @@ -1,7 +1,7 @@ -import { uuidv7 } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI, ExtensionCommandContext } from "@earendil-works/diffex-coding-agent"; -import { DynamicBorder, getMarkdownTheme } from "@earendil-works/diffex-coding-agent"; -import { Container, Markdown, matchesKey, Text } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionCommandContext } from "@diffexai/diffex"; +import { DynamicBorder, getMarkdownTheme } from "@diffexai/diffex"; +import { uuidv7 } from "@diffexai/diffex-ai"; +import { Container, Markdown, matchesKey, Text } from "@diffexai/diffex-tui"; type ContentBlock = { type?: string; diff --git a/packages/coding-agent/examples/extensions/system-prompt-header.ts b/packages/coding-agent/examples/extensions/system-prompt-header.ts index 0735cc09b..2f6c47c54 100644 --- a/packages/coding-agent/examples/extensions/system-prompt-header.ts +++ b/packages/coding-agent/examples/extensions/system-prompt-header.ts @@ -3,7 +3,7 @@ * * Demonstrates ctx.getSystemPrompt() for accessing the effective system prompt. */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("agent_start", (_event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/tic-tac-toe.ts b/packages/coding-agent/examples/extensions/tic-tac-toe.ts index 7d79cb692..85da6564c 100644 --- a/packages/coding-agent/examples/extensions/tic-tac-toe.ts +++ b/packages/coding-agent/examples/extensions/tic-tac-toe.ts @@ -17,9 +17,9 @@ * separate variables. Only the agent cursor is ever exposed to the agent. */ -import { StringEnum } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI, ExtensionContext, Theme, ToolExecutionMode } from "@earendil-works/diffex-coding-agent"; -import { type Component, matchesKey, Text, truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionContext, Theme, ToolExecutionMode } from "@diffexai/diffex"; +import { StringEnum } from "@diffexai/diffex-ai"; +import { type Component, matchesKey, Text, truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; import { Type } from "typebox"; // Thrown from the tool on illegal actions. The agent runtime surfaces thrown diff --git a/packages/coding-agent/examples/extensions/timed-confirm.ts b/packages/coding-agent/examples/extensions/timed-confirm.ts index 152a64f29..30893173c 100644 --- a/packages/coding-agent/examples/extensions/timed-confirm.ts +++ b/packages/coding-agent/examples/extensions/timed-confirm.ts @@ -7,7 +7,7 @@ * - /timed-signal - Shows confirm using AbortSignal (manual approach) */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { // Simple approach: use timeout option (recommended) diff --git a/packages/coding-agent/examples/extensions/titlebar-spinner.ts b/packages/coding-agent/examples/extensions/titlebar-spinner.ts index 86b7823d1..09eab7cb5 100644 --- a/packages/coding-agent/examples/extensions/titlebar-spinner.ts +++ b/packages/coding-agent/examples/extensions/titlebar-spinner.ts @@ -9,7 +9,7 @@ */ import path from "node:path"; -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; const BRAILLE_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"]; diff --git a/packages/coding-agent/examples/extensions/todo.ts b/packages/coding-agent/examples/extensions/todo.ts index 853128e8d..4024166d0 100644 --- a/packages/coding-agent/examples/extensions/todo.ts +++ b/packages/coding-agent/examples/extensions/todo.ts @@ -10,9 +10,9 @@ * correct for that point in history. */ -import { StringEnum } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI, ExtensionContext, Theme } from "@earendil-works/diffex-coding-agent"; -import { matchesKey, Text, truncateToWidth } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionContext, Theme } from "@diffexai/diffex"; +import { StringEnum } from "@diffexai/diffex-ai"; +import { matchesKey, Text, truncateToWidth } from "@diffexai/diffex-tui"; import { Type } from "typebox"; interface Todo { diff --git a/packages/coding-agent/examples/extensions/tool-override.ts b/packages/coding-agent/examples/extensions/tool-override.ts index cb119e32a..4add72e56 100644 --- a/packages/coding-agent/examples/extensions/tool-override.ts +++ b/packages/coding-agent/examples/extensions/tool-override.ts @@ -20,8 +20,8 @@ * diffex -e ./tool-override.ts */ -import type { TextContent } from "@earendil-works/diffex-ai"; -import { type ExtensionAPI, getAgentDir, withFileMutationQueue } from "@earendil-works/diffex-coding-agent"; +import { type ExtensionAPI, getAgentDir, withFileMutationQueue } from "@diffexai/diffex"; +import type { TextContent } from "@diffexai/diffex-ai"; import { constants, readFileSync } from "fs"; import { access, appendFile, readFile } from "fs/promises"; import { join, resolve } from "path"; diff --git a/packages/coding-agent/examples/extensions/tools.ts b/packages/coding-agent/examples/extensions/tools.ts index 79f8b562a..7535bd329 100644 --- a/packages/coding-agent/examples/extensions/tools.ts +++ b/packages/coding-agent/examples/extensions/tools.ts @@ -9,9 +9,9 @@ * 2. Use /tools to open the tool selector */ -import type { ExtensionAPI, ExtensionContext, ToolInfo } from "@earendil-works/diffex-coding-agent"; -import { getSettingsListTheme } from "@earendil-works/diffex-coding-agent"; -import { Container, type SettingItem, SettingsList } from "@earendil-works/diffex-tui"; +import type { ExtensionAPI, ExtensionContext, ToolInfo } from "@diffexai/diffex"; +import { getSettingsListTheme } from "@diffexai/diffex"; +import { Container, type SettingItem, SettingsList } from "@diffexai/diffex-tui"; // State persisted to session interface ToolsState { diff --git a/packages/coding-agent/examples/extensions/trigger-compact.ts b/packages/coding-agent/examples/extensions/trigger-compact.ts index 5378aa45e..072c38361 100644 --- a/packages/coding-agent/examples/extensions/trigger-compact.ts +++ b/packages/coding-agent/examples/extensions/trigger-compact.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionContext } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@diffexai/diffex"; const COMPACT_THRESHOLD_TOKENS = 100_000; diff --git a/packages/coding-agent/examples/extensions/truncated-tool.ts b/packages/coding-agent/examples/extensions/truncated-tool.ts index e2ac18676..ac2a150d0 100644 --- a/packages/coding-agent/examples/extensions/truncated-tool.ts +++ b/packages/coding-agent/examples/extensions/truncated-tool.ts @@ -15,7 +15,7 @@ */ import { mkdtemp, writeFile } from "node:fs/promises"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, @@ -23,8 +23,8 @@ import { type TruncationResult, truncateHead, withFileMutationQueue, -} from "@earendil-works/diffex-coding-agent"; -import { Text } from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex"; +import { Text } from "@diffexai/diffex-tui"; import { execSync } from "child_process"; import { tmpdir } from "os"; import { join } from "path"; diff --git a/packages/coding-agent/examples/extensions/widget-placement.ts b/packages/coding-agent/examples/extensions/widget-placement.ts index 44dc77b1a..ee5a46f1c 100644 --- a/packages/coding-agent/examples/extensions/widget-placement.ts +++ b/packages/coding-agent/examples/extensions/widget-placement.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function widgetPlacementExtension(diffex: ExtensionAPI) { diffex.on("session_start", (_event, ctx) => { diff --git a/packages/coding-agent/examples/extensions/with-deps/index.ts b/packages/coding-agent/examples/extensions/with-deps/index.ts index b99109221..0433d5d57 100644 --- a/packages/coding-agent/examples/extensions/with-deps/index.ts +++ b/packages/coding-agent/examples/extensions/with-deps/index.ts @@ -5,7 +5,7 @@ * Requires: npm install in this directory */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import ms from "ms"; import { Type } from "typebox"; diff --git a/packages/coding-agent/examples/extensions/working-indicator.ts b/packages/coding-agent/examples/extensions/working-indicator.ts index bd6324110..944c49c56 100644 --- a/packages/coding-agent/examples/extensions/working-indicator.ts +++ b/packages/coding-agent/examples/extensions/working-indicator.ts @@ -16,7 +16,7 @@ * /working-indicator reset Restore Diffex's default spinner */ -import type { ExtensionAPI, ExtensionContext, WorkingIndicatorOptions } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ExtensionContext, WorkingIndicatorOptions } from "@diffexai/diffex"; type WorkingIndicatorMode = "dot" | "none" | "pulse" | "spinner" | "default"; diff --git a/packages/coding-agent/examples/extensions/working-message-test.ts b/packages/coding-agent/examples/extensions/working-message-test.ts index 9473d3d3d..4fecaf3fa 100644 --- a/packages/coding-agent/examples/extensions/working-message-test.ts +++ b/packages/coding-agent/examples/extensions/working-message-test.ts @@ -12,7 +12,7 @@ * loader appears, not revert to the default gray "Working...". */ -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; const CUSTOM_MESSAGE = "\x1b[38;2;155;86;63mWorking... (custom)\x1b[39m"; const CUSTOM_INDICATOR = { frames: ["\x1b[38;2;155;86;63m●\x1b[39m"] }; diff --git a/packages/coding-agent/examples/rpc-extension-ui.ts b/packages/coding-agent/examples/rpc-extension-ui.ts index e2b241255..b85f36825 100644 --- a/packages/coding-agent/examples/rpc-extension-ui.ts +++ b/packages/coding-agent/examples/rpc-extension-ui.ts @@ -27,7 +27,7 @@ import { SelectList, type TUI, TuiMainScreen, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; const __dirname = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/coding-agent/examples/sdk/01-minimal.ts b/packages/coding-agent/examples/sdk/01-minimal.ts index c0add7343..423cf925a 100644 --- a/packages/coding-agent/examples/sdk/01-minimal.ts +++ b/packages/coding-agent/examples/sdk/01-minimal.ts @@ -5,7 +5,7 @@ * from cwd and ~/.diffex/agent. Model chosen from settings or first available. */ -import { createAgentSession } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession } from "@diffexai/diffex"; const { session } = await createAgentSession(); diff --git a/packages/coding-agent/examples/sdk/02-custom-model.ts b/packages/coding-agent/examples/sdk/02-custom-model.ts index 8fd628471..11af21f89 100644 --- a/packages/coding-agent/examples/sdk/02-custom-model.ts +++ b/packages/coding-agent/examples/sdk/02-custom-model.ts @@ -4,7 +4,7 @@ * Shows how to select a specific model and thinking level. */ -import { createAgentSession, ModelRuntime } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, ModelRuntime } from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create(); diff --git a/packages/coding-agent/examples/sdk/03-custom-prompt.ts b/packages/coding-agent/examples/sdk/03-custom-prompt.ts index 606685ee2..46d27a752 100644 --- a/packages/coding-agent/examples/sdk/03-custom-prompt.ts +++ b/packages/coding-agent/examples/sdk/03-custom-prompt.ts @@ -4,12 +4,7 @@ * Shows how to replace or modify the default system prompt. */ -import { - createAgentSession, - DefaultResourceLoader, - getAgentDir, - SessionManager, -} from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, DefaultResourceLoader, getAgentDir, SessionManager } from "@diffexai/diffex"; const cwd = process.cwd(); const agentDir = getAgentDir(); diff --git a/packages/coding-agent/examples/sdk/04-skills.ts b/packages/coding-agent/examples/sdk/04-skills.ts index fc5ec89f1..4e0286b22 100644 --- a/packages/coding-agent/examples/sdk/04-skills.ts +++ b/packages/coding-agent/examples/sdk/04-skills.ts @@ -12,7 +12,7 @@ import { DefaultResourceLoader, getAgentDir, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; // Or define custom skills inline const customSkill = createSkill({ diff --git a/packages/coding-agent/examples/sdk/05-tools.ts b/packages/coding-agent/examples/sdk/05-tools.ts index 50e87bd6d..d7dac8234 100644 --- a/packages/coding-agent/examples/sdk/05-tools.ts +++ b/packages/coding-agent/examples/sdk/05-tools.ts @@ -10,7 +10,7 @@ * extensions system using diffex.registerTool(). */ -import { createAgentSession, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, SessionManager } from "@diffexai/diffex"; // Read-only mode (no edit/write) const { session: readOnlySession } = await createAgentSession({ diff --git a/packages/coding-agent/examples/sdk/06-extensions.ts b/packages/coding-agent/examples/sdk/06-extensions.ts index f84c37ee2..c5e6a9484 100644 --- a/packages/coding-agent/examples/sdk/06-extensions.ts +++ b/packages/coding-agent/examples/sdk/06-extensions.ts @@ -13,12 +13,7 @@ * export default function (diffex: ExtensionAPI) { ... } */ -import { - createAgentSession, - DefaultResourceLoader, - getAgentDir, - SessionManager, -} from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, DefaultResourceLoader, getAgentDir, SessionManager } from "@diffexai/diffex"; // Extensions are discovered automatically from standard locations. // You can also add paths via settings.json or DefaultResourceLoader options. @@ -57,7 +52,7 @@ try { // Example extension file (./my-logging-extension.ts): /* -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; export default function (diffex: ExtensionAPI) { diffex.on("agent_start", async () => { diff --git a/packages/coding-agent/examples/sdk/07-context-files.ts b/packages/coding-agent/examples/sdk/07-context-files.ts index 6b9bb3bbe..ddfed7405 100644 --- a/packages/coding-agent/examples/sdk/07-context-files.ts +++ b/packages/coding-agent/examples/sdk/07-context-files.ts @@ -4,12 +4,7 @@ * Context files provide project-specific instructions loaded into the system prompt. */ -import { - createAgentSession, - DefaultResourceLoader, - getAgentDir, - SessionManager, -} from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, DefaultResourceLoader, getAgentDir, SessionManager } from "@diffexai/diffex"; // Disable context files entirely by returning an empty list in agentsFilesOverride. const loader = new DefaultResourceLoader({ diff --git a/packages/coding-agent/examples/sdk/08-prompt-templates.ts b/packages/coding-agent/examples/sdk/08-prompt-templates.ts index 4d9f8129f..d58a9e589 100644 --- a/packages/coding-agent/examples/sdk/08-prompt-templates.ts +++ b/packages/coding-agent/examples/sdk/08-prompt-templates.ts @@ -11,7 +11,7 @@ import { getAgentDir, type PromptTemplate, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; // Define custom templates const deployTemplate: PromptTemplate = { diff --git a/packages/coding-agent/examples/sdk/09-api-keys-and-oauth.ts b/packages/coding-agent/examples/sdk/09-api-keys-and-oauth.ts index 2ee72e572..969124910 100644 --- a/packages/coding-agent/examples/sdk/09-api-keys-and-oauth.ts +++ b/packages/coding-agent/examples/sdk/09-api-keys-and-oauth.ts @@ -4,7 +4,7 @@ * Configure provider auth through ModelRuntime. */ -import { createAgentSession, ModelRuntime, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, ModelRuntime, SessionManager } from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create(); const { session: defaultAuthSession } = await createAgentSession({ diff --git a/packages/coding-agent/examples/sdk/10-settings.ts b/packages/coding-agent/examples/sdk/10-settings.ts index cdfa687c8..fefdbc686 100644 --- a/packages/coding-agent/examples/sdk/10-settings.ts +++ b/packages/coding-agent/examples/sdk/10-settings.ts @@ -4,7 +4,7 @@ * Override settings using SettingsManager. */ -import { createAgentSession, SessionManager, SettingsManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, SessionManager, SettingsManager } from "@diffexai/diffex"; const cwd = process.cwd(); diff --git a/packages/coding-agent/examples/sdk/11-sessions.ts b/packages/coding-agent/examples/sdk/11-sessions.ts index 537c7d228..76e0680eb 100644 --- a/packages/coding-agent/examples/sdk/11-sessions.ts +++ b/packages/coding-agent/examples/sdk/11-sessions.ts @@ -4,7 +4,7 @@ * Control session persistence: in-memory, new file, continue, or open specific. */ -import { createAgentSession, SessionManager } from "@earendil-works/diffex-coding-agent"; +import { createAgentSession, SessionManager } from "@diffexai/diffex"; // In-memory (no persistence) const { session: inMemory } = await createAgentSession({ diff --git a/packages/coding-agent/examples/sdk/12-full-control.ts b/packages/coding-agent/examples/sdk/12-full-control.ts index 5b1d4875f..e9716d050 100644 --- a/packages/coding-agent/examples/sdk/12-full-control.ts +++ b/packages/coding-agent/examples/sdk/12-full-control.ts @@ -4,7 +4,6 @@ * Replace everything - no discovery, explicit configuration. */ -import { getModel } from "@earendil-works/diffex-ai/compat"; import { createAgentSession, createExtensionRuntime, @@ -12,7 +11,8 @@ import { type ResourceLoader, SessionManager, SettingsManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; +import { getModel } from "@diffexai/diffex-ai/compat"; const modelRuntime = await ModelRuntime.create({ authPath: "/tmp/my-agent/auth.json", diff --git a/packages/coding-agent/examples/sdk/13-session-runtime.ts b/packages/coding-agent/examples/sdk/13-session-runtime.ts index 53e0dc98a..99c9fea1c 100644 --- a/packages/coding-agent/examples/sdk/13-session-runtime.ts +++ b/packages/coding-agent/examples/sdk/13-session-runtime.ts @@ -15,7 +15,7 @@ import { createAgentSessionServices, getAgentDir, SessionManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const createRuntime: CreateAgentSessionRuntimeFactory = async ({ cwd, sessionManager, sessionStartEvent }) => { const services = await createAgentSessionServices({ cwd }); diff --git a/packages/coding-agent/examples/sdk/README.md b/packages/coding-agent/examples/sdk/README.md index 7a1b36bec..e1ecee47e 100644 --- a/packages/coding-agent/examples/sdk/README.md +++ b/packages/coding-agent/examples/sdk/README.md @@ -32,14 +32,14 @@ npx tsx examples/sdk/01-minimal.ts ## Quick Reference ```typescript -import { getModel } from "@earendil-works/diffex-ai"; +import { getModel } from "@diffexai/diffex-ai"; import { createAgentSession, DefaultResourceLoader, ModelRuntime, SessionManager, SettingsManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; const modelRuntime = await ModelRuntime.create(); diff --git a/packages/coding-agent/install-lock/package-lock.json b/packages/coding-agent/install-lock/package-lock.json index e8d64790c..8196d5334 100644 --- a/packages/coding-agent/install-lock/package-lock.json +++ b/packages/coding-agent/install-lock/package-lock.json @@ -1,14 +1,14 @@ { - "name": "@earendil-works/diffex-coding-agent-install", + "name": "@diffexai/diffex-coding-agent-install", "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@earendil-works/diffex-coding-agent-install", + "name": "@diffexai/diffex-coding-agent-install", "version": "0.2.0", "dependencies": { - "@earendil-works/diffex-coding-agent": "0.2.0" + "@diffexai/diffex": "0.2.0" }, "engines": { "node": ">=22.19.0" @@ -449,13 +449,52 @@ "node": ">=6.9.0" } }, - "node_modules/@earendil-works/diffex-agent-core": { + "node_modules/@diffexai/diffex": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-agent-core/-/diffex-agent-core-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex/-/diffex-0.2.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-agent-core": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-client": "^0.2.0", + "@diffexai/diffex-harness-state": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", + "@diffexai/diffex-tui": "^0.2.0", + "@napi-rs/keyring": "1.3.0", + "@silvia-odwyer/photon-node": "0.3.4", + "chalk": "5.6.2", + "cross-spawn": "7.0.6", + "diff": "8.0.4", + "glob": "13.0.6", + "grok-mermaid": "0.2.2", + "highlight.js": "10.7.3", + "hosted-git-info": "9.0.3", + "ignore": "7.0.5", + "jiti": "2.7.0", + "minimatch": "10.2.5", + "proper-lockfile": "4.1.2", + "semver": "7.8.0", + "typebox": "1.3.7", + "undici": "8.9.0", + "yaml": "2.9.0" + }, + "optionalDependencies": { + "@mariozechner/clipboard": "0.3.9" + }, + "bin": { + "diffex": "dist/cli.js" + }, + "engines": { + "node": ">=22.19.0" + } + }, + "node_modules/@diffexai/diffex-agent-core": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-agent-core/-/diffex-agent-core-0.2.0.tgz", + "license": "MIT", + "dependencies": { + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "diff": "8.0.4", "ignore": "7.0.5", "typebox": "1.3.7", @@ -465,14 +504,14 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-ai": { + "node_modules/@diffexai/diffex-ai": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-ai/-/diffex-ai-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-ai/-/diffex-ai-0.2.0.tgz", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", "@aws-sdk/client-bedrock-runtime": "3.1048.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "@google/genai": "1.52.0", "@mistralai/mistralai": "2.2.6", "@opentelemetry/api": "1.9.0", @@ -490,59 +529,20 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-client": { + "node_modules/@diffexai/diffex-client": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-client/-/diffex-client-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-client/-/diffex-client-0.2.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/diffex-protocol": "^0.2.0" - }, - "engines": { - "node": ">=22.19.0" - } - }, - "node_modules/@earendil-works/diffex-coding-agent": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-coding-agent/-/diffex-coding-agent-0.2.0.tgz", - "license": "MIT", - "dependencies": { - "@earendil-works/diffex-agent-core": "^0.2.0", - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-client": "^0.2.0", - "@earendil-works/diffex-harness-state": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", - "@earendil-works/diffex-tui": "^0.2.0", - "@napi-rs/keyring": "1.3.0", - "@silvia-odwyer/photon-node": "0.3.4", - "chalk": "5.6.2", - "cross-spawn": "7.0.6", - "diff": "8.0.4", - "glob": "13.0.6", - "grok-mermaid": "0.2.2", - "highlight.js": "10.7.3", - "hosted-git-info": "9.0.3", - "ignore": "7.0.5", - "jiti": "2.7.0", - "minimatch": "10.2.5", - "proper-lockfile": "4.1.2", - "semver": "7.8.0", - "typebox": "1.3.7", - "undici": "8.9.0", - "yaml": "2.9.0" - }, - "optionalDependencies": { - "@mariozechner/clipboard": "0.3.9" - }, - "bin": { - "diffex": "dist/cli.js" + "@diffexai/diffex-protocol": "^0.2.0" }, "engines": { "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-harness-state": { + "node_modules/@diffexai/diffex-harness-state": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-harness-state/-/diffex-harness-state-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-harness-state/-/diffex-harness-state-0.2.0.tgz", "license": "MIT", "dependencies": { "proper-lockfile": "4.1.2", @@ -553,9 +553,9 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-protocol": { + "node_modules/@diffexai/diffex-protocol": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-protocol/-/diffex-protocol-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-protocol/-/diffex-protocol-0.2.0.tgz", "license": "MIT", "dependencies": { "typebox": "1.3.7" @@ -564,17 +564,17 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-telemetry": { + "node_modules/@diffexai/diffex-telemetry": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-telemetry/-/diffex-telemetry-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-telemetry/-/diffex-telemetry-0.2.0.tgz", "license": "MIT", "engines": { "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-tui": { + "node_modules/@diffexai/diffex-tui": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-tui/-/diffex-tui-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-tui/-/diffex-tui-0.2.0.tgz", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", diff --git a/packages/coding-agent/install-lock/package.json b/packages/coding-agent/install-lock/package.json index 63676d573..e06072378 100644 --- a/packages/coding-agent/install-lock/package.json +++ b/packages/coding-agent/install-lock/package.json @@ -1,10 +1,10 @@ { - "name": "@earendil-works/diffex-coding-agent-install", + "name": "@diffexai/diffex-coding-agent-install", "version": "0.2.0", "private": true, "description": "Lockfile root used by the Diffex installer and updater.", "dependencies": { - "@earendil-works/diffex-coding-agent": "0.2.0" + "@diffexai/diffex": "0.2.0" }, "overrides": { "protobufjs": "7.6.5", diff --git a/packages/coding-agent/npm-shrinkwrap.json b/packages/coding-agent/npm-shrinkwrap.json index dd187506e..a74acc369 100644 --- a/packages/coding-agent/npm-shrinkwrap.json +++ b/packages/coding-agent/npm-shrinkwrap.json @@ -1,20 +1,20 @@ { - "name": "@earendil-works/diffex-coding-agent", + "name": "@diffexai/diffex", "version": "0.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@earendil-works/diffex-coding-agent", + "name": "@diffexai/diffex", "version": "0.2.0", "license": "MIT", "dependencies": { - "@earendil-works/diffex-agent-core": "^0.2.0", - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-client": "^0.2.0", - "@earendil-works/diffex-harness-state": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", - "@earendil-works/diffex-tui": "^0.2.0", + "@diffexai/diffex-agent-core": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-client": "^0.2.0", + "@diffexai/diffex-harness-state": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", + "@diffexai/diffex-tui": "^0.2.0", "@napi-rs/keyring": "1.3.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", @@ -478,13 +478,13 @@ "node": ">=6.9.0" } }, - "node_modules/@earendil-works/diffex-agent-core": { + "node_modules/@diffexai/diffex-agent-core": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-agent-core/-/diffex-agent-core-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-agent-core/-/diffex-agent-core-0.2.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "diff": "8.0.4", "ignore": "7.0.5", "typebox": "1.3.7", @@ -494,14 +494,14 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-ai": { + "node_modules/@diffexai/diffex-ai": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-ai/-/diffex-ai-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-ai/-/diffex-ai-0.2.0.tgz", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "0.91.1", "@aws-sdk/client-bedrock-runtime": "3.1048.0", - "@earendil-works/diffex-telemetry": "^0.2.0", + "@diffexai/diffex-telemetry": "^0.2.0", "@google/genai": "1.52.0", "@mistralai/mistralai": "2.2.6", "@opentelemetry/api": "1.9.0", @@ -519,20 +519,20 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-client": { + "node_modules/@diffexai/diffex-client": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-client/-/diffex-client-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-client/-/diffex-client-0.2.0.tgz", "license": "MIT", "dependencies": { - "@earendil-works/diffex-protocol": "^0.2.0" + "@diffexai/diffex-protocol": "^0.2.0" }, "engines": { "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-harness-state": { + "node_modules/@diffexai/diffex-harness-state": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-harness-state/-/diffex-harness-state-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-harness-state/-/diffex-harness-state-0.2.0.tgz", "license": "MIT", "dependencies": { "proper-lockfile": "4.1.2", @@ -543,9 +543,9 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-protocol": { + "node_modules/@diffexai/diffex-protocol": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-protocol/-/diffex-protocol-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-protocol/-/diffex-protocol-0.2.0.tgz", "license": "MIT", "dependencies": { "typebox": "1.3.7" @@ -554,17 +554,17 @@ "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-telemetry": { + "node_modules/@diffexai/diffex-telemetry": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-telemetry/-/diffex-telemetry-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-telemetry/-/diffex-telemetry-0.2.0.tgz", "license": "MIT", "engines": { "node": ">=22.19.0" } }, - "node_modules/@earendil-works/diffex-tui": { + "node_modules/@diffexai/diffex-tui": { "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@earendil-works/diffex-tui/-/diffex-tui-0.2.0.tgz", + "resolved": "https://registry.npmjs.org/@diffexai/diffex-tui/-/diffex-tui-0.2.0.tgz", "license": "MIT", "dependencies": { "get-east-asian-width": "1.6.0", diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index a0983b40a..18b5e5ac5 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-coding-agent", + "name": "@diffexai/diffex", "version": "0.2.0", "description": "Coding agent CLI with read, bash, edit, write, update_plan tools and session management", "type": "module", @@ -47,12 +47,12 @@ "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap" }, "dependencies": { - "@earendil-works/diffex-agent-core": "^0.2.0", - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-client": "^0.2.0", - "@earendil-works/diffex-harness-state": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", - "@earendil-works/diffex-tui": "^0.2.0", + "@diffexai/diffex-agent-core": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-client": "^0.2.0", + "@diffexai/diffex-harness-state": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", + "@diffexai/diffex-tui": "^0.2.0", "@napi-rs/keyring": "1.3.0", "@silvia-odwyer/photon-node": "0.3.4", "chalk": "5.6.2", diff --git a/packages/coding-agent/src/bun/cli.ts b/packages/coding-agent/src/bun/cli.ts index d35473d4f..c0b20990e 100644 --- a/packages/coding-agent/src/bun/cli.ts +++ b/packages/coding-agent/src/bun/cli.ts @@ -1,5 +1,5 @@ #!/usr/bin/env node -import { registerBunOAuthFlows } from "@earendil-works/diffex-ai/bun-oauth"; +import { registerBunOAuthFlows } from "@diffexai/diffex-ai/bun-oauth"; import { APP_NAME } from "../config.ts"; process.title = APP_NAME; diff --git a/packages/coding-agent/src/bun/register-bedrock.ts b/packages/coding-agent/src/bun/register-bedrock.ts index c451b5e30..bb0e617b7 100644 --- a/packages/coding-agent/src/bun/register-bedrock.ts +++ b/packages/coding-agent/src/bun/register-bedrock.ts @@ -1,4 +1,4 @@ -import { bedrockProviderModule } from "@earendil-works/diffex-ai/bedrock-provider"; -import { setBedrockProviderModule } from "@earendil-works/diffex-ai/compat"; +import { bedrockProviderModule } from "@diffexai/diffex-ai/bedrock-provider"; +import { setBedrockProviderModule } from "@diffexai/diffex-ai/compat"; setBedrockProviderModule(bedrockProviderModule); diff --git a/packages/coding-agent/src/cli/args.ts b/packages/coding-agent/src/cli/args.ts index 987c69bed..5fc315522 100644 --- a/packages/coding-agent/src/cli/args.ts +++ b/packages/coding-agent/src/cli/args.ts @@ -2,7 +2,7 @@ * CLI argument parsing and help display */ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; import chalk from "chalk"; import { APP_NAME, APP_TITLE, CONFIG_DIR_NAME, ENV_AGENT_DIR, ENV_SESSION_DIR } from "../config.ts"; import type { ExtensionFlag } from "../core/extensions/types.ts"; diff --git a/packages/coding-agent/src/cli/auth-check.ts b/packages/coding-agent/src/cli/auth-check.ts index 0c0dbb194..1807f486e 100644 --- a/packages/coding-agent/src/cli/auth-check.ts +++ b/packages/coding-agent/src/cli/auth-check.ts @@ -1,4 +1,4 @@ -import type { CredentialStore } from "@earendil-works/diffex-ai"; +import type { CredentialStore } from "@diffexai/diffex-ai"; import { resolveCliModel } from "../core/model-resolver.ts"; import { ModelRuntime } from "../core/model-runtime.ts"; import { InMemoryCodingAgentModelsStore } from "../core/models-store.ts"; diff --git a/packages/coding-agent/src/cli/auth-command.ts b/packages/coding-agent/src/cli/auth-command.ts index c1dec0207..7612dd362 100644 --- a/packages/coding-agent/src/cli/auth-command.ts +++ b/packages/coding-agent/src/cli/auth-command.ts @@ -1,4 +1,4 @@ -import type { AuthResult } from "@earendil-works/diffex-ai"; +import type { AuthResult } from "@diffexai/diffex-ai"; import { APP_NAME } from "../config.ts"; import type { Args } from "./args.ts"; diff --git a/packages/coding-agent/src/cli/config-selector.ts b/packages/coding-agent/src/cli/config-selector.ts index 2605e42b5..014a95fe6 100644 --- a/packages/coding-agent/src/cli/config-selector.ts +++ b/packages/coding-agent/src/cli/config-selector.ts @@ -2,7 +2,7 @@ * TUI config selector for `diffex config` command */ -import { ProcessTerminal, type TUI, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { ProcessTerminal, type TUI, TuiMainScreen } from "@diffexai/diffex-tui"; import type { SettingsManager } from "../core/settings-manager.ts"; import { ConfigSelectorComponent, type ScopedResolvedPaths } from "../modes/interactive/components/config-selector.ts"; import { initTheme, stopThemeWatcher } from "../modes/interactive/theme/theme.ts"; diff --git a/packages/coding-agent/src/cli/credential-print.ts b/packages/coding-agent/src/cli/credential-print.ts index 74dee7184..e195e157e 100644 --- a/packages/coding-agent/src/cli/credential-print.ts +++ b/packages/coding-agent/src/cli/credential-print.ts @@ -1,4 +1,4 @@ -import type { Api, CredentialInfo, Model } from "@earendil-works/diffex-ai"; +import type { Api, CredentialInfo, Model } from "@diffexai/diffex-ai"; import { resolveCliModel } from "../core/model-resolver.ts"; import type { ModelRuntime } from "../core/model-runtime.ts"; import type { Args } from "./args.ts"; diff --git a/packages/coding-agent/src/cli/file-processor.ts b/packages/coding-agent/src/cli/file-processor.ts index 7e0348970..3b5597f6a 100644 --- a/packages/coding-agent/src/cli/file-processor.ts +++ b/packages/coding-agent/src/cli/file-processor.ts @@ -3,7 +3,7 @@ */ import { access, readFile, stat } from "node:fs/promises"; -import type { ImageContent } from "@earendil-works/diffex-ai"; +import type { ImageContent } from "@diffexai/diffex-ai"; import chalk from "chalk"; import { resolve } from "path"; import { resolveReadPath } from "../core/tools/path-utils.ts"; diff --git a/packages/coding-agent/src/cli/initial-message.ts b/packages/coding-agent/src/cli/initial-message.ts index c344f0658..355b48ff4 100644 --- a/packages/coding-agent/src/cli/initial-message.ts +++ b/packages/coding-agent/src/cli/initial-message.ts @@ -1,4 +1,4 @@ -import type { ImageContent } from "@earendil-works/diffex-ai"; +import type { ImageContent } from "@diffexai/diffex-ai"; import type { Args } from "./args.ts"; export interface InitialMessageInput { diff --git a/packages/coding-agent/src/cli/list-models.ts b/packages/coding-agent/src/cli/list-models.ts index 4f3656216..dcdde7798 100644 --- a/packages/coding-agent/src/cli/list-models.ts +++ b/packages/coding-agent/src/cli/list-models.ts @@ -2,8 +2,8 @@ * List available models with optional fuzzy search */ -import type { Api, Model } from "@earendil-works/diffex-ai"; -import { fuzzyFilter } from "@earendil-works/diffex-tui"; +import type { Api, Model } from "@diffexai/diffex-ai"; +import { fuzzyFilter } from "@diffexai/diffex-tui"; import chalk from "chalk"; import { formatNoModelsAvailableMessage } from "../core/auth-guidance.ts"; import type { ModelRuntime } from "../core/model-runtime.ts"; diff --git a/packages/coding-agent/src/cli/session-picker.ts b/packages/coding-agent/src/cli/session-picker.ts index 8e7446a45..4e517f8ee 100644 --- a/packages/coding-agent/src/cli/session-picker.ts +++ b/packages/coding-agent/src/cli/session-picker.ts @@ -2,7 +2,7 @@ * TUI session selector for --resume flag */ -import { setKeybindings } from "@earendil-works/diffex-tui"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { KeybindingsManager } from "../core/keybindings.ts"; import type { SessionInfo, SessionListProgress } from "../core/session-manager.ts"; import type { SettingsManager } from "../core/settings-manager.ts"; diff --git a/packages/coding-agent/src/cli/startup-ui.ts b/packages/coding-agent/src/cli/startup-ui.ts index 727e16c56..a420795d2 100644 --- a/packages/coding-agent/src/cli/startup-ui.ts +++ b/packages/coding-agent/src/cli/startup-ui.ts @@ -1,4 +1,4 @@ -import { ProcessTerminal, setKeybindings, type TUI, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { ProcessTerminal, setKeybindings, type TUI, TuiMainScreen } from "@diffexai/diffex-tui"; import { existsSync } from "fs"; import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR, getAgentDir, getSettingsPath, PACKAGE_NAME } from "../config.ts"; import { areExperimentalFeaturesEnabled } from "../core/experimental.ts"; @@ -23,7 +23,7 @@ import { type Theme, } from "../modes/interactive/theme/theme.ts"; -const OFFICIAL_PACKAGE_NAME = "@earendil-works/diffex-coding-agent"; +const OFFICIAL_PACKAGE_NAME = "@diffexai/diffex"; const OFFICIAL_APP_NAME = "diffex"; const OFFICIAL_CONFIG_DIR_NAME = ".diffex"; diff --git a/packages/coding-agent/src/client/remote-session.ts b/packages/coding-agent/src/client/remote-session.ts index 83fb134a1..1a5c832d7 100644 --- a/packages/coding-agent/src/client/remote-session.ts +++ b/packages/coding-agent/src/client/remote-session.ts @@ -4,7 +4,7 @@ import type { DiffexClient, SessionLease, Unsubscribe, -} from "@earendil-works/diffex-client"; +} from "@diffexai/diffex-client"; import type { ModelMetadata, ModelRef, @@ -14,7 +14,7 @@ import type { SessionSnapshot, ThinkingLevel, TranscriptItem, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { applyTranscriptProgress, applyTranscriptSnapshot, diff --git a/packages/coding-agent/src/client/transcript.ts b/packages/coding-agent/src/client/transcript.ts index 5f2dec9f7..999be73ed 100644 --- a/packages/coding-agent/src/client/transcript.ts +++ b/packages/coding-agent/src/client/transcript.ts @@ -1,4 +1,4 @@ -import type { JsonValue, SessionSnapshot, TranscriptItem, TranscriptProgress } from "@earendil-works/diffex-protocol"; +import type { JsonValue, SessionSnapshot, TranscriptItem, TranscriptProgress } from "@diffexai/diffex-protocol"; export interface TranscriptState { readonly snapshot: SessionSnapshot; diff --git a/packages/coding-agent/src/config.ts b/packages/coding-agent/src/config.ts index 5afec152a..b7c58dfe6 100644 --- a/packages/coding-agent/src/config.ts +++ b/packages/coding-agent/src/config.ts @@ -485,7 +485,7 @@ try { } const diffexConfigName: string | undefined = pkg.diffexConfig?.name; -export const PACKAGE_NAME: string = pkg.name || "@earendil-works/diffex-coding-agent"; +export const PACKAGE_NAME: string = pkg.name || "@diffexai/diffex"; export const APP_NAME: string = diffexConfigName || "diffex"; export const APP_TITLE: string = diffexConfigName ? APP_NAME : "Diffex"; export const CONFIG_DIR_NAME: string = pkg.diffexConfig?.configDir || ".diffex"; diff --git a/packages/coding-agent/src/core/agent-session-lifecycle.ts b/packages/coding-agent/src/core/agent-session-lifecycle.ts index e2ab89cae..c6a8c4a42 100644 --- a/packages/coding-agent/src/core/agent-session-lifecycle.ts +++ b/packages/coding-agent/src/core/agent-session-lifecycle.ts @@ -1,4 +1,4 @@ -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; import type { SessionManager } from "./session-manager.ts"; export type InvocationSessionAttachmentReason = "startup" | "resume" | "new" | "import" | "fork" | "switch"; diff --git a/packages/coding-agent/src/core/agent-session-runtime.ts b/packages/coding-agent/src/core/agent-session-runtime.ts index 3a1ba562a..3a866afed 100644 --- a/packages/coding-agent/src/core/agent-session-runtime.ts +++ b/packages/coding-agent/src/core/agent-session-runtime.ts @@ -1,6 +1,6 @@ import { copyFileSync, existsSync, mkdirSync } from "node:fs"; import { basename, join, resolve } from "node:path"; -import type { TelemetryContext } from "@earendil-works/diffex-agent-core"; +import type { TelemetryContext } from "@diffexai/diffex-agent-core"; import { resolvePath } from "../utils/paths.ts"; import type { AgentSession } from "./agent-session.ts"; import type { InvocationSessionAttachmentReason } from "./agent-session-lifecycle.ts"; diff --git a/packages/coding-agent/src/core/agent-session-services.ts b/packages/coding-agent/src/core/agent-session-services.ts index edc967b1b..51c3c1878 100644 --- a/packages/coding-agent/src/core/agent-session-services.ts +++ b/packages/coding-agent/src/core/agent-session-services.ts @@ -1,7 +1,7 @@ import { join } from "node:path"; -import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext, type ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import type { Model } from "@earendil-works/diffex-ai"; -import type { HarnessStateStore, HarnessVersionBundle } from "@earendil-works/diffex-harness-state"; +import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext, type ThinkingLevel } from "@diffexai/diffex-agent-core"; +import type { Model } from "@diffexai/diffex-ai"; +import type { HarnessStateStore, HarnessVersionBundle } from "@diffexai/diffex-harness-state"; import { getAgentDir } from "../config.ts"; import { resolvePath } from "../utils/paths.ts"; import type { AgentSessionLifecycleObserver } from "./agent-session-lifecycle.ts"; diff --git a/packages/coding-agent/src/core/agent-session.ts b/packages/coding-agent/src/core/agent-session.ts index ec93d409f..7fb9cdc68 100644 --- a/packages/coding-agent/src/core/agent-session.ts +++ b/packages/coding-agent/src/core/agent-session.ts @@ -26,8 +26,8 @@ import { type TelemetryContext, type ThinkingLevel, uuidv7, -} from "@earendil-works/diffex-agent-core"; -import { contentText } from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-agent-core"; +import { contentText } from "@diffexai/diffex-ai"; import type { AssistantMessage, AuthResult, @@ -36,7 +36,7 @@ import type { ProviderHeaders, TextContent, Usage, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import { clampThinkingLevel, cleanupSessionResources, @@ -48,14 +48,14 @@ import { type RetryCallbacks, resetApiProviders, streamSimple, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import type { HarnessStateStore, HarnessVersion, HarnessVersionBundle, HarnessVersionList, HarnessWorkspaceIdentity, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import { getThemeByName, theme } from "../modes/interactive/theme/theme.ts"; import { canonicalizePath, resolvePath } from "../utils/paths.ts"; import { sleep } from "../utils/sleep.ts"; diff --git a/packages/coding-agent/src/core/auth-storage.ts b/packages/coding-agent/src/core/auth-storage.ts index 52b223c5e..8c0d362e4 100644 --- a/packages/coding-agent/src/core/auth-storage.ts +++ b/packages/coding-agent/src/core/auth-storage.ts @@ -3,7 +3,7 @@ * Provider auth orchestration belongs to ModelRuntime and Diffex AI Models. */ -import type { AuthOperationOptions, Credential, CredentialInfo, CredentialStore } from "@earendil-works/diffex-ai"; +import type { AuthOperationOptions, Credential, CredentialInfo, CredentialStore } from "@diffexai/diffex-ai"; import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs"; import { dirname, join } from "path"; import lockfile from "proper-lockfile"; diff --git a/packages/coding-agent/src/core/cache-stats.ts b/packages/coding-agent/src/core/cache-stats.ts index 21112f383..2b8797f68 100644 --- a/packages/coding-agent/src/core/cache-stats.ts +++ b/packages/coding-agent/src/core/cache-stats.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@earendil-works/diffex-ai"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; import type { SessionEntry } from "./session-manager.ts"; /** diff --git a/packages/coding-agent/src/core/compaction/branch-summarization.ts b/packages/coding-agent/src/core/compaction/branch-summarization.ts index cef01afa0..67b1e4e7b 100644 --- a/packages/coding-agent/src/core/compaction/branch-summarization.ts +++ b/packages/coding-agent/src/core/compaction/branch-summarization.ts @@ -5,10 +5,10 @@ * a summary of the branch being left so context isn't lost. */ -import type { AgentMessage, StreamFn, TelemetryContext } from "@earendil-works/diffex-agent-core"; -import type { RetryCallbacks, RetryPolicy } from "@earendil-works/diffex-ai"; -import { contentText } from "@earendil-works/diffex-ai"; -import type { Model, SimpleStreamOptions, Usage } from "@earendil-works/diffex-ai/compat"; +import type { AgentMessage, StreamFn, TelemetryContext } from "@diffexai/diffex-agent-core"; +import type { RetryCallbacks, RetryPolicy } from "@diffexai/diffex-ai"; +import { contentText } from "@diffexai/diffex-ai"; +import type { Model, SimpleStreamOptions, Usage } from "@diffexai/diffex-ai/compat"; import { convertToLlm, createBranchSummaryMessage, diff --git a/packages/coding-agent/src/core/compaction/compaction.ts b/packages/coding-agent/src/core/compaction/compaction.ts index ee30daee3..dce3fc5b5 100644 --- a/packages/coding-agent/src/core/compaction/compaction.ts +++ b/packages/coding-agent/src/core/compaction/compaction.ts @@ -13,16 +13,10 @@ import { startAiSpan, type TelemetryContext, type ThinkingLevel, -} from "@earendil-works/diffex-agent-core"; -import { - contentText, - type RetryCallbacks, - type RetryPolicy, - retryAssistantCall, - uuidv7, -} from "@earendil-works/diffex-ai"; -import type { AssistantMessage, Context, Model, SimpleStreamOptions, Usage } from "@earendil-works/diffex-ai/compat"; -import { completeSimple } from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-agent-core"; +import { contentText, type RetryCallbacks, type RetryPolicy, retryAssistantCall, uuidv7 } from "@diffexai/diffex-ai"; +import type { AssistantMessage, Context, Model, SimpleStreamOptions, Usage } from "@diffexai/diffex-ai/compat"; +import { completeSimple } from "@diffexai/diffex-ai/compat"; import { convertToLlm } from "../messages.ts"; import { buildSessionContext, diff --git a/packages/coding-agent/src/core/compaction/utils.ts b/packages/coding-agent/src/core/compaction/utils.ts index 7f56f71db..bde21cb81 100644 --- a/packages/coding-agent/src/core/compaction/utils.ts +++ b/packages/coding-agent/src/core/compaction/utils.ts @@ -2,8 +2,8 @@ * Shared utilities for compaction and branch summarization. */ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import { contentText, type Message } from "@earendil-works/diffex-ai"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import { contentText, type Message } from "@diffexai/diffex-ai"; // ============================================================================ // File Operation Tracking diff --git a/packages/coding-agent/src/core/defaults.ts b/packages/coding-agent/src/core/defaults.ts index 026408508..c0dc07b55 100644 --- a/packages/coding-agent/src/core/defaults.ts +++ b/packages/coding-agent/src/core/defaults.ts @@ -1,3 +1,3 @@ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; export const DEFAULT_THINKING_LEVEL: ThinkingLevel = "medium"; diff --git a/packages/coding-agent/src/core/evolution-runtime.ts b/packages/coding-agent/src/core/evolution-runtime.ts index 8cdc3b2c0..9f02f6713 100644 --- a/packages/coding-agent/src/core/evolution-runtime.ts +++ b/packages/coding-agent/src/core/evolution-runtime.ts @@ -11,8 +11,8 @@ import { type Message, type Model, type Tool, -} from "@earendil-works/diffex-ai"; -import type { HarnessStateStore, HarnessVersion } from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-ai"; +import type { HarnessStateStore, HarnessVersion } from "@diffexai/diffex-harness-state"; import lockfile from "proper-lockfile"; import type { TSchema } from "typebox"; import { Check, Errors } from "typebox/value"; diff --git a/packages/coding-agent/src/core/export-html/index.ts b/packages/coding-agent/src/core/export-html/index.ts index f73b2b1f1..47e593335 100644 --- a/packages/coding-agent/src/core/export-html/index.ts +++ b/packages/coding-agent/src/core/export-html/index.ts @@ -1,4 +1,4 @@ -import type { AgentState } from "@earendil-works/diffex-agent-core"; +import type { AgentState } from "@diffexai/diffex-agent-core"; import { existsSync, readFileSync, writeFileSync } from "fs"; import { basename, join } from "path"; import { APP_NAME, getExportTemplateDir } from "../../config.ts"; diff --git a/packages/coding-agent/src/core/export-html/tool-renderer.ts b/packages/coding-agent/src/core/export-html/tool-renderer.ts index 03cb3a836..6cdea0084 100644 --- a/packages/coding-agent/src/core/export-html/tool-renderer.ts +++ b/packages/coding-agent/src/core/export-html/tool-renderer.ts @@ -5,8 +5,8 @@ * and converting the ANSI output to HTML. */ -import type { ImageContent, TextContent } from "@earendil-works/diffex-ai"; -import type { Component } from "@earendil-works/diffex-tui"; +import type { ImageContent, TextContent } from "@diffexai/diffex-ai"; +import type { Component } from "@diffexai/diffex-tui"; import type { Theme } from "../../modes/interactive/theme/theme.ts"; import type { ToolDefinition, ToolRenderContext } from "../extensions/types.ts"; import { ansiLinesToHtml } from "./ansi-to-html.ts"; diff --git a/packages/coding-agent/src/core/extensions/loader.ts b/packages/coding-agent/src/core/extensions/loader.ts index d4fcbe0fb..7c0efba58 100644 --- a/packages/coding-agent/src/core/extensions/loader.ts +++ b/packages/coding-agent/src/core/extensions/loader.ts @@ -7,13 +7,13 @@ import * as fs from "node:fs"; import { createRequire } from "node:module"; import * as path from "node:path"; import { fileURLToPath } from "node:url"; -import * as _bundledDiffexAgentCore from "@earendil-works/diffex-agent-core"; -import type { Provider } from "@earendil-works/diffex-ai"; -import * as _bundledDiffexAiCompat from "@earendil-works/diffex-ai/compat"; -import * as _bundledDiffexAiOauth from "@earendil-works/diffex-ai/oauth"; -import * as _bundledDiffexAiProviders from "@earendil-works/diffex-ai/providers/all"; -import type { KeyId } from "@earendil-works/diffex-tui"; -import * as _bundledDiffexTui from "@earendil-works/diffex-tui"; +import * as _bundledDiffexAgentCore from "@diffexai/diffex-agent-core"; +import type { Provider } from "@diffexai/diffex-ai"; +import * as _bundledDiffexAiCompat from "@diffexai/diffex-ai/compat"; +import * as _bundledDiffexAiOauth from "@diffexai/diffex-ai/oauth"; +import * as _bundledDiffexAiProviders from "@diffexai/diffex-ai/providers/all"; +import type { KeyId } from "@diffexai/diffex-tui"; +import * as _bundledDiffexTui from "@diffexai/diffex-tui"; import { createJiti } from "jiti/static"; // Static imports of packages that extensions may use. // These MUST be static so Bun bundles them into the compiled binary. @@ -23,7 +23,7 @@ import * as _bundledTypeboxCompile from "typebox/compile"; import * as _bundledTypeboxValue from "typebox/value"; import { CONFIG_DIR_NAME, getAgentDir, isBunBinary } from "../../config.ts"; // NOTE: This import works because loader.ts exports are NOT re-exported from index.ts, -// avoiding a circular dependency. Extensions can import from @earendil-works/diffex-coding-agent. +// avoiding a circular dependency. Extensions can import from @diffexai/diffex. import * as _bundledDiffexCodingAgent from "../../index.ts"; import { resolvePath } from "../../utils/paths.ts"; import { readDiffexManifest } from "../diffex-manifest.ts"; @@ -54,16 +54,16 @@ const VIRTUAL_MODULES: Record = { "@sinclair/typebox": _bundledTypebox, "@sinclair/typebox/compile": _bundledTypeboxCompile, "@sinclair/typebox/value": _bundledTypeboxValue, - "@earendil-works/diffex-agent-core": _bundledDiffexAgentCore, - "@earendil-works/diffex-tui": _bundledDiffexTui, + "@diffexai/diffex-agent-core": _bundledDiffexAgentCore, + "@diffexai/diffex-tui": _bundledDiffexTui, // Extensions resolve the Diffex AI root to the compat entrypoint (a strict // superset of the core entrypoint): existing extensions using the old // global API keep working at runtime until compat is removed. - "@earendil-works/diffex-ai": _bundledDiffexAiCompat, - "@earendil-works/diffex-ai/compat": _bundledDiffexAiCompat, - "@earendil-works/diffex-ai/oauth": _bundledDiffexAiOauth, - "@earendil-works/diffex-ai/providers/all": _bundledDiffexAiProviders, - "@earendil-works/diffex-coding-agent": _bundledDiffexCodingAgent, + "@diffexai/diffex-ai": _bundledDiffexAiCompat, + "@diffexai/diffex-ai/compat": _bundledDiffexAiCompat, + "@diffexai/diffex-ai/oauth": _bundledDiffexAiOauth, + "@diffexai/diffex-ai/providers/all": _bundledDiffexAiProviders, + "@diffexai/diffex": _bundledDiffexCodingAgent, "@mariozechner/pi-agent-core": _bundledDiffexAgentCore, "@mariozechner/pi-tui": _bundledDiffexTui, "@mariozechner/pi-ai": _bundledDiffexAiCompat, @@ -103,26 +103,26 @@ function getAliases(): Record { }; const diffexCodingAgentEntry = packageIndex; - const diffexAgentCoreEntry = resolveWorkspaceOrImport("agent/dist/index.js", "@earendil-works/diffex-agent-core"); - const diffexTuiEntry = resolveWorkspaceOrImport("tui/dist/index.js", "@earendil-works/diffex-tui"); + const diffexAgentCoreEntry = resolveWorkspaceOrImport("agent/dist/index.js", "@diffexai/diffex-agent-core"); + const diffexTuiEntry = resolveWorkspaceOrImport("tui/dist/index.js", "@diffexai/diffex-tui"); // Extensions resolve the Diffex AI root to the compat entrypoint (a strict // superset of the core entrypoint): existing extensions using the old // global API keep working at runtime until compat is removed. - const diffexAiCompatEntry = resolveWorkspaceOrImport("ai/dist/compat.js", "@earendil-works/diffex-ai/compat"); - const diffexAiOauthEntry = resolveWorkspaceOrImport("ai/dist/oauth.js", "@earendil-works/diffex-ai/oauth"); + const diffexAiCompatEntry = resolveWorkspaceOrImport("ai/dist/compat.js", "@diffexai/diffex-ai/compat"); + const diffexAiOauthEntry = resolveWorkspaceOrImport("ai/dist/oauth.js", "@diffexai/diffex-ai/oauth"); const diffexAiProvidersEntry = resolveWorkspaceOrImport( "ai/dist/providers/all.js", - "@earendil-works/diffex-ai/providers/all", + "@diffexai/diffex-ai/providers/all", ); _aliases = { - "@earendil-works/diffex-coding-agent": diffexCodingAgentEntry, - "@earendil-works/diffex-agent-core": diffexAgentCoreEntry, - "@earendil-works/diffex-tui": diffexTuiEntry, - "@earendil-works/diffex-ai/providers/all": diffexAiProvidersEntry, - "@earendil-works/diffex-ai/compat": diffexAiCompatEntry, - "@earendil-works/diffex-ai/oauth": diffexAiOauthEntry, - "@earendil-works/diffex-ai": diffexAiCompatEntry, + "@diffexai/diffex": diffexCodingAgentEntry, + "@diffexai/diffex-agent-core": diffexAgentCoreEntry, + "@diffexai/diffex-tui": diffexTuiEntry, + "@diffexai/diffex-ai/providers/all": diffexAiProvidersEntry, + "@diffexai/diffex-ai/compat": diffexAiCompatEntry, + "@diffexai/diffex-ai/oauth": diffexAiOauthEntry, + "@diffexai/diffex-ai": diffexAiCompatEntry, "@mariozechner/pi-coding-agent": diffexCodingAgentEntry, "@mariozechner/pi-agent-core": diffexAgentCoreEntry, "@mariozechner/pi-tui": diffexTuiEntry, diff --git a/packages/coding-agent/src/core/extensions/runner.ts b/packages/coding-agent/src/core/extensions/runner.ts index 12fa67de3..7ca90b223 100644 --- a/packages/coding-agent/src/core/extensions/runner.ts +++ b/packages/coding-agent/src/core/extensions/runner.ts @@ -2,9 +2,9 @@ * Extension runner - executes extensions and manages their lifecycle. */ -import { type AgentMessage, NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@earendil-works/diffex-agent-core"; -import type { ImageContent, Model, Provider, ProviderHeaders } from "@earendil-works/diffex-ai"; -import type { KeyId } from "@earendil-works/diffex-tui"; +import { type AgentMessage, NOOP_TELEMETRY_CONTEXT, type TelemetryContext } from "@diffexai/diffex-agent-core"; +import type { ImageContent, Model, Provider, ProviderHeaders } from "@diffexai/diffex-ai"; +import type { KeyId } from "@diffexai/diffex-tui"; import { type Theme, theme } from "../../modes/interactive/theme/theme.ts"; import type { ResourceDiagnostic } from "../diagnostics.ts"; import type { KeybindingsConfig } from "../keybindings.ts"; diff --git a/packages/coding-agent/src/core/extensions/types.ts b/packages/coding-agent/src/core/extensions/types.ts index 9ea4c36ad..bd49f4677 100644 --- a/packages/coding-agent/src/core/extensions/types.ts +++ b/packages/coding-agent/src/core/extensions/types.ts @@ -14,7 +14,7 @@ import type { AgentToolUpdateCallback, ThinkingLevel, ToolExecutionMode, -} from "@earendil-works/diffex-agent-core"; +} from "@diffexai/diffex-agent-core"; import type { Api, AssistantMessageEvent, @@ -32,7 +32,7 @@ import type { TextContent, ToolResultMessage, Usage, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import type { AutocompleteItem, AutocompleteProvider, @@ -43,7 +43,7 @@ import type { OverlayHandle, OverlayOptions, TUI, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { Static, TSchema } from "typebox"; import type { Theme } from "../../modes/interactive/theme/theme.ts"; import type { BashResult } from "../bash-executor.ts"; @@ -235,12 +235,12 @@ export interface ExtensionUIContext { * - `keybindings`: KeybindingsManager for app-level keybindings * * For full app keybinding support (escape, ctrl+d, model switching, etc.), - * extend `CustomEditor` from `@earendil-works/diffex-coding-agent` and call + * extend `CustomEditor` from `@diffexai/diffex` and call * `super.handleInput(data)` for keys you don't handle. * * @example * ```ts - * import { CustomEditor } from "@earendil-works/diffex-coding-agent"; + * import { CustomEditor } from "@diffexai/diffex"; * * class VimEditor extends CustomEditor { * private mode: "normal" | "insert" = "insert"; diff --git a/packages/coding-agent/src/core/extensions/wrapper.ts b/packages/coding-agent/src/core/extensions/wrapper.ts index 10c1b8e9d..0957f7fa0 100644 --- a/packages/coding-agent/src/core/extensions/wrapper.ts +++ b/packages/coding-agent/src/core/extensions/wrapper.ts @@ -5,7 +5,7 @@ * Tool call and tool result interception is handled by AgentSession via agent-core hooks. */ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; import { wrapToolDefinition } from "../tools/tool-definition-wrapper.ts"; import type { ExtensionRunner } from "./runner.ts"; import type { RegisteredTool } from "./types.ts"; diff --git a/packages/coding-agent/src/core/finalized-plan.ts b/packages/coding-agent/src/core/finalized-plan.ts index db93dff93..68cbeab8b 100644 --- a/packages/coding-agent/src/core/finalized-plan.ts +++ b/packages/coding-agent/src/core/finalized-plan.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@earendil-works/diffex-ai/compat"; +import type { AssistantMessage } from "@diffexai/diffex-ai/compat"; const OPEN_TAG = ""; const CLOSE_TAG = ""; diff --git a/packages/coding-agent/src/core/harness-state-runtime.ts b/packages/coding-agent/src/core/harness-state-runtime.ts index 613f0d71b..311ef6d26 100644 --- a/packages/coding-agent/src/core/harness-state-runtime.ts +++ b/packages/coding-agent/src/core/harness-state-runtime.ts @@ -6,7 +6,7 @@ import { type HarnessVersionBundle, type HarnessWorkspaceIdentity, harnessWorkspaceSelectionFileName, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; export interface ResolvedHarnessWorkspace { readonly workspace: HarnessWorkspaceIdentity; diff --git a/packages/coding-agent/src/core/invocation-trace.ts b/packages/coding-agent/src/core/invocation-trace.ts index b574e1082..13ba38671 100644 --- a/packages/coding-agent/src/core/invocation-trace.ts +++ b/packages/coding-agent/src/core/invocation-trace.ts @@ -7,8 +7,8 @@ import { type SpanOptions, type TelemetryContext, type TelemetrySpan, -} from "@earendil-works/diffex-agent-core"; -import { uuidv7 } from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-agent-core"; +import { uuidv7 } from "@diffexai/diffex-ai"; import lockfile from "proper-lockfile"; import { classifyEvolutionEvidence } from "#evolution"; import { diff --git a/packages/coding-agent/src/core/keybindings.ts b/packages/coding-agent/src/core/keybindings.ts index d0c32ac88..d29d9a5cd 100644 --- a/packages/coding-agent/src/core/keybindings.ts +++ b/packages/coding-agent/src/core/keybindings.ts @@ -5,7 +5,7 @@ import { type KeyId, TUI_KEYBINDINGS, KeybindingsManager as TuiKeybindingsManager, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { existsSync, readFileSync } from "fs"; import { join } from "path"; import { getAgentDir } from "../config.ts"; @@ -59,7 +59,7 @@ export interface AppKeybindings { export type AppKeybinding = keyof AppKeybindings; -declare module "@earendil-works/diffex-tui" { +declare module "@diffexai/diffex-tui" { interface Keybindings extends AppKeybindings {} } diff --git a/packages/coding-agent/src/core/lesson-reports.ts b/packages/coding-agent/src/core/lesson-reports.ts index 858d1696e..81b7434b9 100644 --- a/packages/coding-agent/src/core/lesson-reports.ts +++ b/packages/coding-agent/src/core/lesson-reports.ts @@ -1,6 +1,6 @@ -import type { AgentLoopConfig, StreamFn } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, Tool } from "@earendil-works/diffex-ai"; -import type { HarnessVersion, HarnessVersionBundle } from "@earendil-works/diffex-harness-state"; +import type { AgentLoopConfig, StreamFn } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, Tool } from "@diffexai/diffex-ai"; +import type { HarnessVersion, HarnessVersionBundle } from "@diffexai/diffex-harness-state"; import { Type } from "typebox"; import { Check } from "typebox/value"; import { type EvolutionMemoryItem, type EvolutionMemoryWriter, parseEvolutionMemoryBlocks } from "#evolution"; diff --git a/packages/coding-agent/src/core/messages.ts b/packages/coding-agent/src/core/messages.ts index 9453fba3b..83e50d56b 100644 --- a/packages/coding-agent/src/core/messages.ts +++ b/packages/coding-agent/src/core/messages.ts @@ -5,8 +5,8 @@ * and provides a transformer to convert them to LLM-compatible messages. */ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { ImageContent, Message, TextContent } from "@earendil-works/diffex-ai"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { ImageContent, Message, TextContent } from "@diffexai/diffex-ai"; export const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary: @@ -67,7 +67,7 @@ export interface CompactionSummaryMessage { } // Extend CustomAgentMessages via declaration merging -declare module "@earendil-works/diffex-agent-core" { +declare module "@diffexai/diffex-agent-core" { interface CustomAgentMessages { bashExecution: BashExecutionMessage; custom: CustomMessage; diff --git a/packages/coding-agent/src/core/model-registry.ts b/packages/coding-agent/src/core/model-registry.ts index 4cb6d650f..8cc9de567 100644 --- a/packages/coding-agent/src/core/model-registry.ts +++ b/packages/coding-agent/src/core/model-registry.ts @@ -9,7 +9,7 @@ import type { ModelsRefreshResult, Provider, ProviderHeaders, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import type { ModelRuntime } from "./model-runtime.ts"; import type { AuthStatus, ProviderConfigInput } from "./provider-composer.ts"; diff --git a/packages/coding-agent/src/core/model-resolver.ts b/packages/coding-agent/src/core/model-resolver.ts index 0123e2c93..2b5246f16 100644 --- a/packages/coding-agent/src/core/model-resolver.ts +++ b/packages/coding-agent/src/core/model-resolver.ts @@ -2,14 +2,14 @@ * Model resolution, scoping, and initial selection */ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; import { type Api, type AuthOperationOptions, type KnownProvider, type Model, modelsAreEqual, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import chalk from "chalk"; import { minimatch } from "minimatch"; import { isValidThinkingLevel } from "../cli/args.ts"; diff --git a/packages/coding-agent/src/core/model-runtime.ts b/packages/coding-agent/src/core/model-runtime.ts index a70569468..d896bce33 100644 --- a/packages/coding-agent/src/core/model-runtime.ts +++ b/packages/coding-agent/src/core/model-runtime.ts @@ -35,8 +35,8 @@ import { type ProviderRequestOptions, type SimpleStreamOptions, type StreamOptions, -} from "@earendil-works/diffex-ai"; -import * as builtinProviderCatalog from "@earendil-works/diffex-ai/providers/all"; +} from "@diffexai/diffex-ai"; +import * as builtinProviderCatalog from "@diffexai/diffex-ai/providers/all"; import { getAgentDir } from "../config.ts"; import { operationSignal, raceWithAbortSignal } from "../utils/abort.ts"; import { AuthStorage as DefaultAuthStorage } from "./auth-storage.ts"; diff --git a/packages/coding-agent/src/core/models-store.ts b/packages/coding-agent/src/core/models-store.ts index 5776dcdbc..d0421eb76 100644 --- a/packages/coding-agent/src/core/models-store.ts +++ b/packages/coding-agent/src/core/models-store.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import type { ModelsStore, ModelsStoreEntry, ModelsStoreOperationOptions } from "@earendil-works/diffex-ai"; +import type { ModelsStore, ModelsStoreEntry, ModelsStoreOperationOptions } from "@diffexai/diffex-ai"; import { getAgentDir } from "../config.ts"; import { raceWithAbortSignal } from "../utils/abort.ts"; import { getFileRevision, normalizePath } from "../utils/paths.ts"; diff --git a/packages/coding-agent/src/core/private-report.ts b/packages/coding-agent/src/core/private-report.ts index 9e7f3a0a0..13178f800 100644 --- a/packages/coding-agent/src/core/private-report.ts +++ b/packages/coding-agent/src/core/private-report.ts @@ -1,6 +1,6 @@ -import type { PrivateContinuation, StreamFn } from "@earendil-works/diffex-agent-core"; -import type { Api, AssistantMessage, Context, Model, Tool } from "@earendil-works/diffex-ai"; -import { NOOP_TELEMETRY_CONTEXT } from "@earendil-works/diffex-telemetry"; +import type { PrivateContinuation, StreamFn } from "@diffexai/diffex-agent-core"; +import type { Api, AssistantMessage, Context, Model, Tool } from "@diffexai/diffex-ai"; +import { NOOP_TELEMETRY_CONTEXT } from "@diffexai/diffex-telemetry"; /** One private continuation, never routed through agent events or extension-instrumented transport. */ export function createPrivateReportContinuation(options: { diff --git a/packages/coding-agent/src/core/project-trust.ts b/packages/coding-agent/src/core/project-trust.ts index a6fa9532f..3c06bb0a9 100644 --- a/packages/coding-agent/src/core/project-trust.ts +++ b/packages/coding-agent/src/core/project-trust.ts @@ -1,4 +1,4 @@ -import type { TelemetryContext } from "@earendil-works/diffex-agent-core"; +import type { TelemetryContext } from "@diffexai/diffex-agent-core"; import { CONFIG_DIR_NAME } from "../config.ts"; import { emitProjectTrustEvent } from "./extensions/runner.ts"; import type { LoadExtensionsResult, ProjectTrustContext } from "./extensions/types.ts"; diff --git a/packages/coding-agent/src/core/provider-attribution.ts b/packages/coding-agent/src/core/provider-attribution.ts index 81731272f..ea2b380a8 100644 --- a/packages/coding-agent/src/core/provider-attribution.ts +++ b/packages/coding-agent/src/core/provider-attribution.ts @@ -1,4 +1,4 @@ -import type { Api, Model, ProviderHeaders } from "@earendil-works/diffex-ai"; +import type { Api, Model, ProviderHeaders } from "@diffexai/diffex-ai"; import type { SettingsManager } from "./settings-manager.ts"; import { isInstallTelemetryEnabled } from "./telemetry.ts"; diff --git a/packages/coding-agent/src/core/provider-composer.ts b/packages/coding-agent/src/core/provider-composer.ts index 2dd530f05..a28c3d7a8 100644 --- a/packages/coding-agent/src/core/provider-composer.ts +++ b/packages/coding-agent/src/core/provider-composer.ts @@ -18,8 +18,8 @@ import { type RefreshModelsContext, type SimpleStreamOptions, type StreamOptions, -} from "@earendil-works/diffex-ai"; -import { getApiProvider } from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai"; +import { getApiProvider } from "@diffexai/diffex-ai/compat"; import type { ModelConfig, ModelsJsonModel, ModelsJsonModelOverride, ModelsJsonProvider } from "./model-config.ts"; import { clearConfigValueCache, diff --git a/packages/coding-agent/src/core/remote-catalog-provider.ts b/packages/coding-agent/src/core/remote-catalog-provider.ts index 2d76c2186..7bc33d71c 100644 --- a/packages/coding-agent/src/core/remote-catalog-provider.ts +++ b/packages/coding-agent/src/core/remote-catalog-provider.ts @@ -1,4 +1,4 @@ -import type { Api, Model, ModelsStoreEntry, Provider } from "@earendil-works/diffex-ai"; +import type { Api, Model, ModelsStoreEntry, Provider } from "@diffexai/diffex-ai"; import { VERSION } from "../config.ts"; import { getDiffexUserAgent } from "../utils/diffex-user-agent.ts"; import { fetchWithRetry } from "../utils/management-http.ts"; diff --git a/packages/coding-agent/src/core/runtime-credentials.ts b/packages/coding-agent/src/core/runtime-credentials.ts index 1fe8d41ea..5c2a4ddc0 100644 --- a/packages/coding-agent/src/core/runtime-credentials.ts +++ b/packages/coding-agent/src/core/runtime-credentials.ts @@ -1,4 +1,4 @@ -import type { AuthOperationOptions, Credential, CredentialInfo, CredentialStore } from "@earendil-works/diffex-ai"; +import type { AuthOperationOptions, Credential, CredentialInfo, CredentialStore } from "@diffexai/diffex-ai"; /** Async credential store overlay for non-persistent runtime API keys. */ export class RuntimeCredentials implements CredentialStore { diff --git a/packages/coding-agent/src/core/sdk.ts b/packages/coding-agent/src/core/sdk.ts index f47283e06..ab01aad0c 100644 --- a/packages/coding-agent/src/core/sdk.ts +++ b/packages/coding-agent/src/core/sdk.ts @@ -7,9 +7,9 @@ import { setDefaultStreamFn, type TelemetryContext, type ThinkingLevel, -} from "@earendil-works/diffex-agent-core"; -import { clampThinkingLevel, type Message, type Model, streamSimple } from "@earendil-works/diffex-ai/compat"; -import type { HarnessStateStore, HarnessVersionBundle } from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-agent-core"; +import { clampThinkingLevel, type Message, type Model, streamSimple } from "@diffexai/diffex-ai/compat"; +import type { HarnessStateStore, HarnessVersionBundle } from "@diffexai/diffex-harness-state"; import { EvolutionMemoryWriter, FileEvolutionPersistence } from "#evolution"; import { getAgentDir, VERSION } from "../config.ts"; import { resolvePath } from "../utils/paths.ts"; @@ -384,7 +384,7 @@ function restoreRootSubagents( * const { session } = await createAgentSession(); * * // With explicit model - * import { getModel } from '@earendil-works/diffex-ai'; + * import { getModel } from '@diffexai/diffex-ai'; * const { session } = await createAgentSession({ * model: getModel('anthropic', 'claude-opus-4-5'), * thinkingLevel: 'high', diff --git a/packages/coding-agent/src/core/session-manager.ts b/packages/coding-agent/src/core/session-manager.ts index d0df46945..ea3ed7278 100644 --- a/packages/coding-agent/src/core/session-manager.ts +++ b/packages/coding-agent/src/core/session-manager.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import { type ImageContent, type Message, type TextContent, type Usage, uuidv7 } from "@earendil-works/diffex-ai"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import { type ImageContent, type Message, type TextContent, type Usage, uuidv7 } from "@diffexai/diffex-ai"; import { createHash, randomUUID } from "crypto"; import { appendFileSync, diff --git a/packages/coding-agent/src/core/settings-manager.ts b/packages/coding-agent/src/core/settings-manager.ts index 8a7f818b2..bf4f02087 100644 --- a/packages/coding-agent/src/core/settings-manager.ts +++ b/packages/coding-agent/src/core/settings-manager.ts @@ -1,6 +1,6 @@ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import type { Transport } from "@earendil-works/diffex-ai"; -import type { TuiMode as RendererTuiMode, ScrollViewScrollbar } from "@earendil-works/diffex-tui"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; +import type { Transport } from "@diffexai/diffex-ai"; +import type { TuiMode as RendererTuiMode, ScrollViewScrollbar } from "@diffexai/diffex-tui"; import { randomUUID } from "crypto"; import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "fs"; import { dirname, join } from "path"; diff --git a/packages/coding-agent/src/core/skill-reports.ts b/packages/coding-agent/src/core/skill-reports.ts index fb0d5c486..b3b219f08 100644 --- a/packages/coding-agent/src/core/skill-reports.ts +++ b/packages/coding-agent/src/core/skill-reports.ts @@ -1,11 +1,11 @@ -import type { AgentLoopConfig, StreamFn } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, Tool } from "@earendil-works/diffex-ai"; +import type { AgentLoopConfig, StreamFn } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, Tool } from "@diffexai/diffex-ai"; import { computeHarnessSkillId, type HarnessVersion, type HarnessVersionBundle, type HarnessWorkspaceIdentity, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import { Type } from "typebox"; import { Check } from "typebox/value"; import type { EvolutionScope, SkillScoreIdentity } from "#evolution"; diff --git a/packages/coding-agent/src/core/skills.ts b/packages/coding-agent/src/core/skills.ts index 51e0c7f41..eb7a266f3 100644 --- a/packages/coding-agent/src/core/skills.ts +++ b/packages/coding-agent/src/core/skills.ts @@ -3,7 +3,7 @@ import { computeHarnessSkillId, type HarnessVersionBundle, type HarnessWorkspaceIdentity, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import { existsSync, readdirSync, readFileSync, statSync } from "fs"; import ignore from "ignore"; import { basename, dirname, join, relative, resolve, sep } from "path"; diff --git a/packages/coding-agent/src/core/subagents/controller.ts b/packages/coding-agent/src/core/subagents/controller.ts index 6864f713c..9320dd7e9 100644 --- a/packages/coding-agent/src/core/subagents/controller.ts +++ b/packages/coding-agent/src/core/subagents/controller.ts @@ -1,5 +1,5 @@ -import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext, uuidv7 } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage } from "@earendil-works/diffex-ai"; +import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext, uuidv7 } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; import type { AgentSession } from "../agent-session.ts"; import type { ToolDefinition } from "../extensions/types.ts"; import { startCodingAgentSpan } from "../telemetry.ts"; diff --git a/packages/coding-agent/src/core/subagents/persistence.ts b/packages/coding-agent/src/core/subagents/persistence.ts index 5c661e02b..a5da699ba 100644 --- a/packages/coding-agent/src/core/subagents/persistence.ts +++ b/packages/coding-agent/src/core/subagents/persistence.ts @@ -1,7 +1,7 @@ import { existsSync, lstatSync, mkdirSync, readdirSync } from "node:fs"; import { dirname, isAbsolute, relative, resolve, sep } from "node:path"; -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import { uuidv7 } from "@earendil-works/diffex-ai"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; +import { uuidv7 } from "@diffexai/diffex-ai"; import { assertValidSessionId, type CustomEntry, diff --git a/packages/coding-agent/src/core/subagents/services.ts b/packages/coding-agent/src/core/subagents/services.ts index 54a836422..3f39ff7a4 100644 --- a/packages/coding-agent/src/core/subagents/services.ts +++ b/packages/coding-agent/src/core/subagents/services.ts @@ -1,7 +1,7 @@ -import type { TelemetryContext, ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import type { Model } from "@earendil-works/diffex-ai"; -import { clampThinkingLevel } from "@earendil-works/diffex-ai/compat"; -import type { HarnessStateStore, HarnessVersionBundle } from "@earendil-works/diffex-harness-state"; +import type { TelemetryContext, ThinkingLevel } from "@diffexai/diffex-agent-core"; +import type { Model } from "@diffexai/diffex-ai"; +import { clampThinkingLevel } from "@diffexai/diffex-ai/compat"; +import type { HarnessStateStore, HarnessVersionBundle } from "@diffexai/diffex-harness-state"; import type { AgentSession } from "../agent-session.ts"; import { type AgentSessionServices, diff --git a/packages/coding-agent/src/core/subagents/types.ts b/packages/coding-agent/src/core/subagents/types.ts index 129735469..f1bd5f473 100644 --- a/packages/coding-agent/src/core/subagents/types.ts +++ b/packages/coding-agent/src/core/subagents/types.ts @@ -1,4 +1,4 @@ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; import type { AgentSession } from "../agent-session.ts"; import type { SessionManager } from "../session-manager.ts"; import type { ToolName } from "../tools/index.ts"; diff --git a/packages/coding-agent/src/core/telemetry.ts b/packages/coding-agent/src/core/telemetry.ts index 44c34cf9a..14e156959 100644 --- a/packages/coding-agent/src/core/telemetry.ts +++ b/packages/coding-agent/src/core/telemetry.ts @@ -7,7 +7,7 @@ import type { TelemetrySchemaSpanName, TelemetrySchemaSpanStartAttributes, TelemetrySchemaSpanUnion, -} from "@earendil-works/diffex-agent-core"; +} from "@diffexai/diffex-agent-core"; import type { SettingsManager } from "./settings-manager.ts"; function isTruthyEnvFlag(value: string | undefined): boolean { diff --git a/packages/coding-agent/src/core/tools/bash.ts b/packages/coding-agent/src/core/tools/bash.ts index fe56547bc..00d008f1c 100644 --- a/packages/coding-agent/src/core/tools/bash.ts +++ b/packages/coding-agent/src/core/tools/bash.ts @@ -1,7 +1,7 @@ import { constants } from "node:fs"; import { access as fsAccess } from "node:fs/promises"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Container, Text, truncateToWidth } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Container, Text, truncateToWidth } from "@diffexai/diffex-tui"; import { spawn } from "child_process"; import { type Static, Type } from "typebox"; import { keyHint } from "../../modes/interactive/components/keybinding-hints.ts"; diff --git a/packages/coding-agent/src/core/tools/edit.ts b/packages/coding-agent/src/core/tools/edit.ts index 2970ae8a1..cca7b62a8 100644 --- a/packages/coding-agent/src/core/tools/edit.ts +++ b/packages/coding-agent/src/core/tools/edit.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Box, Container, Spacer, Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Box, Container, Spacer, Text } from "@diffexai/diffex-tui"; import { constants } from "fs"; import { access as fsAccess, readFile as fsReadFile, writeFile as fsWriteFile } from "fs/promises"; import { type Static, Type } from "typebox"; diff --git a/packages/coding-agent/src/core/tools/find.ts b/packages/coding-agent/src/core/tools/find.ts index b13477b48..60899fd87 100644 --- a/packages/coding-agent/src/core/tools/find.ts +++ b/packages/coding-agent/src/core/tools/find.ts @@ -1,6 +1,6 @@ import { createInterface } from "node:readline"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Text } from "@diffexai/diffex-tui"; import { spawn } from "child_process"; import path from "path"; import { type Static, Type } from "typebox"; diff --git a/packages/coding-agent/src/core/tools/grep.ts b/packages/coding-agent/src/core/tools/grep.ts index 646b5a0fa..5d7b3c19f 100644 --- a/packages/coding-agent/src/core/tools/grep.ts +++ b/packages/coding-agent/src/core/tools/grep.ts @@ -1,7 +1,7 @@ import { readFile as fsReadFile, stat as fsStat } from "node:fs/promises"; import { createInterface } from "node:readline"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Text } from "@diffexai/diffex-tui"; import { spawn } from "child_process"; import path from "path"; import { type Static, Type } from "typebox"; diff --git a/packages/coding-agent/src/core/tools/index.ts b/packages/coding-agent/src/core/tools/index.ts index 3a735192a..0f39e387e 100644 --- a/packages/coding-agent/src/core/tools/index.ts +++ b/packages/coding-agent/src/core/tools/index.ts @@ -76,7 +76,7 @@ export { type WriteToolOptions, } from "./write.ts"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; import type { ToolDefinition } from "../extensions/types.ts"; import { type BashToolOptions, createBashTool, createBashToolDefinition } from "./bash.ts"; import { createEditTool, createEditToolDefinition, type EditToolOptions } from "./edit.ts"; diff --git a/packages/coding-agent/src/core/tools/ls.ts b/packages/coding-agent/src/core/tools/ls.ts index 4a08c0665..65b050f0e 100644 --- a/packages/coding-agent/src/core/tools/ls.ts +++ b/packages/coding-agent/src/core/tools/ls.ts @@ -1,6 +1,6 @@ import { readdir as fsReaddir, stat as fsStat } from "node:fs/promises"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Text } from "@diffexai/diffex-tui"; import nodePath from "path"; import { type Static, Type } from "typebox"; import { keyHint } from "../../modes/interactive/components/keybinding-hints.ts"; diff --git a/packages/coding-agent/src/core/tools/read.ts b/packages/coding-agent/src/core/tools/read.ts index 90adcafff..97f6910d6 100644 --- a/packages/coding-agent/src/core/tools/read.ts +++ b/packages/coding-agent/src/core/tools/read.ts @@ -1,8 +1,8 @@ import { createHash } from "node:crypto"; import { basename, dirname, isAbsolute, relative, resolve as resolvePath, sep } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import type { Api, ImageContent, Model, TextContent } from "@earendil-works/diffex-ai"; -import { Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import type { Api, ImageContent, Model, TextContent } from "@diffexai/diffex-ai"; +import { Text } from "@diffexai/diffex-tui"; import { constants } from "fs"; import { access as fsAccess, readFile as fsReadFile } from "fs/promises"; import { type Static, Type } from "typebox"; diff --git a/packages/coding-agent/src/core/tools/render-utils.ts b/packages/coding-agent/src/core/tools/render-utils.ts index 324970a57..8463a7d1e 100644 --- a/packages/coding-agent/src/core/tools/render-utils.ts +++ b/packages/coding-agent/src/core/tools/render-utils.ts @@ -1,7 +1,7 @@ import * as os from "node:os"; import { pathToFileURL } from "node:url"; -import type { ImageContent, TextContent } from "@earendil-works/diffex-ai"; -import { getCapabilities, getImageDimensions, hyperlink, imageFallback } from "@earendil-works/diffex-tui"; +import type { ImageContent, TextContent } from "@diffexai/diffex-ai"; +import { getCapabilities, getImageDimensions, hyperlink, imageFallback } from "@diffexai/diffex-tui"; import type { Theme } from "../../modes/interactive/theme/theme.ts"; import { stripAnsi } from "../../utils/ansi.ts"; import { resolvePath } from "../../utils/paths.ts"; diff --git a/packages/coding-agent/src/core/tools/request-user-input.ts b/packages/coding-agent/src/core/tools/request-user-input.ts index 3182b889a..a15dcd755 100644 --- a/packages/coding-agent/src/core/tools/request-user-input.ts +++ b/packages/coding-agent/src/core/tools/request-user-input.ts @@ -1,4 +1,4 @@ -import { Container, Text } from "@earendil-works/diffex-tui"; +import { Container, Text } from "@diffexai/diffex-tui"; import { Type } from "typebox"; import { RequestUserInputComponent } from "../../modes/interactive/components/request-user-input.ts"; import type { ToolDefinition } from "../extensions/types.ts"; diff --git a/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts b/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts index 25852a013..5fefeeb72 100644 --- a/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts +++ b/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; import type { ExtensionContext, ToolDefinition } from "../extensions/types.ts"; /** Wrap a ToolDefinition into an AgentTool for the core runtime. */ diff --git a/packages/coding-agent/src/core/tools/update-plan.ts b/packages/coding-agent/src/core/tools/update-plan.ts index d23d6be15..a14f55fd5 100644 --- a/packages/coding-agent/src/core/tools/update-plan.ts +++ b/packages/coding-agent/src/core/tools/update-plan.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Container, Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Container, Text } from "@diffexai/diffex-tui"; import { Type } from "typebox"; import type { Theme } from "../../modes/interactive/theme/theme.ts"; import type { ToolDefinition } from "../extensions/types.ts"; diff --git a/packages/coding-agent/src/core/tools/write.ts b/packages/coding-agent/src/core/tools/write.ts index fbd1550ee..338677667 100644 --- a/packages/coding-agent/src/core/tools/write.ts +++ b/packages/coding-agent/src/core/tools/write.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Container, Text } from "@earendil-works/diffex-tui"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Container, Text } from "@diffexai/diffex-tui"; import { mkdir as fsMkdir, writeFile as fsWriteFile } from "fs/promises"; import { dirname } from "path"; import { type Static, Type } from "typebox"; diff --git a/packages/coding-agent/src/core/usage-totals.ts b/packages/coding-agent/src/core/usage-totals.ts index 475db11a9..d9a2c5d5e 100644 --- a/packages/coding-agent/src/core/usage-totals.ts +++ b/packages/coding-agent/src/core/usage-totals.ts @@ -1,4 +1,4 @@ -import type { Usage } from "@earendil-works/diffex-ai/compat"; +import type { Usage } from "@diffexai/diffex-ai/compat"; import type { SessionEntry } from "./session-manager.ts"; export interface UsageTotals { diff --git a/packages/coding-agent/src/extensions/llama/provider.ts b/packages/coding-agent/src/extensions/llama/provider.ts index 80819d296..8682edb80 100644 --- a/packages/coding-agent/src/extensions/llama/provider.ts +++ b/packages/coding-agent/src/extensions/llama/provider.ts @@ -6,8 +6,8 @@ import type { Provider, ProviderStreamOptions, RefreshModelsContext, -} from "@earendil-works/diffex-ai"; -import { stream, streamSimple } from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai"; +import { stream, streamSimple } from "@diffexai/diffex-ai/compat"; import { LlamaClient, type LlamaModelInfo, llamaInferenceUrl, normalizeLlamaServerUrl } from "./client.ts"; export const LLAMA_PROVIDER_ID = "llama.cpp"; diff --git a/packages/coding-agent/src/extensions/llama/ui.ts b/packages/coding-agent/src/extensions/llama/ui.ts index 9e1b47ee0..5fc81aed7 100644 --- a/packages/coding-agent/src/extensions/llama/ui.ts +++ b/packages/coding-agent/src/extensions/llama/ui.ts @@ -11,7 +11,7 @@ import { type TUI, truncateToWidth, visibleWidth, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { ExtensionCommandContext } from "../../core/extensions/types.ts"; import type { KeybindingsManager } from "../../core/keybindings.ts"; import { DynamicBorder } from "../../modes/interactive/components/dynamic-border.ts"; diff --git a/packages/coding-agent/src/main.ts b/packages/coding-agent/src/main.ts index d05d0a9f5..a7bbf5799 100644 --- a/packages/coding-agent/src/main.ts +++ b/packages/coding-agent/src/main.ts @@ -6,7 +6,7 @@ */ import { createInterface } from "node:readline"; -import { type ImageContent, modelsAreEqual } from "@earendil-works/diffex-ai"; +import { type ImageContent, modelsAreEqual } from "@diffexai/diffex-ai"; import chalk from "chalk"; import { type Args, type Mode, parseArgs, printHelp } from "./cli/args.ts"; import { diff --git a/packages/coding-agent/src/modes/interactive/components/armin.ts b/packages/coding-agent/src/modes/interactive/components/armin.ts index 092a69252..39a214285 100644 --- a/packages/coding-agent/src/modes/interactive/components/armin.ts +++ b/packages/coding-agent/src/modes/interactive/components/armin.ts @@ -2,7 +2,7 @@ * Armin says hi! A fun easter egg with animated XBM art. */ -import type { Component, TUI } from "@earendil-works/diffex-tui"; +import type { Component, TUI } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; // XBM image: 31x36 pixels, LSB first, 1=background, 0=foreground diff --git a/packages/coding-agent/src/modes/interactive/components/assistant-message.ts b/packages/coding-agent/src/modes/interactive/components/assistant-message.ts index 412785dc3..0d04d6e74 100644 --- a/packages/coding-agent/src/modes/interactive/components/assistant-message.ts +++ b/packages/coding-agent/src/modes/interactive/components/assistant-message.ts @@ -1,5 +1,5 @@ -import type { AssistantMessage } from "@earendil-works/diffex-ai"; -import { Container, getGlyphs, Markdown, type MarkdownTheme, Spacer, Text } from "@earendil-works/diffex-tui"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; +import { Container, getGlyphs, Markdown, type MarkdownTheme, Spacer, Text } from "@diffexai/diffex-tui"; import type { MarkdownTransformer } from "../../../core/extensions/types.ts"; import { getMarkdownTheme, theme } from "../theme/theme.ts"; import { diff --git a/packages/coding-agent/src/modes/interactive/components/bash-execution.ts b/packages/coding-agent/src/modes/interactive/components/bash-execution.ts index 49aa09f4e..0ad1a0663 100644 --- a/packages/coding-agent/src/modes/interactive/components/bash-execution.ts +++ b/packages/coding-agent/src/modes/interactive/components/bash-execution.ts @@ -2,7 +2,7 @@ * Component for displaying bash command execution with streaming output. */ -import { Container, getGlyphs, Loader, Spacer, Text, type TUI } from "@earendil-works/diffex-tui"; +import { Container, getGlyphs, Loader, Spacer, Text, type TUI } from "@diffexai/diffex-tui"; import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, diff --git a/packages/coding-agent/src/modes/interactive/components/bordered-loader.ts b/packages/coding-agent/src/modes/interactive/components/bordered-loader.ts index 65d7020ac..1b90670cc 100644 --- a/packages/coding-agent/src/modes/interactive/components/bordered-loader.ts +++ b/packages/coding-agent/src/modes/interactive/components/bordered-loader.ts @@ -1,4 +1,4 @@ -import { CancellableLoader, Container, getGlyphs, Loader, type TUI } from "@earendil-works/diffex-tui"; +import { CancellableLoader, Container, getGlyphs, Loader, type TUI } from "@diffexai/diffex-tui"; import type { Theme } from "../theme/theme.ts"; import { keyText } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/branch-summary-message.ts b/packages/coding-agent/src/modes/interactive/components/branch-summary-message.ts index 1b113be99..7de1a6242 100644 --- a/packages/coding-agent/src/modes/interactive/components/branch-summary-message.ts +++ b/packages/coding-agent/src/modes/interactive/components/branch-summary-message.ts @@ -1,4 +1,4 @@ -import { Container, getGlyphs, Markdown, type MarkdownTheme, Text } from "@earendil-works/diffex-tui"; +import { Container, getGlyphs, Markdown, type MarkdownTheme, Text } from "@diffexai/diffex-tui"; import type { BranchSummaryMessage } from "../../../core/messages.ts"; import { getMarkdownTheme, theme } from "../theme/theme.ts"; import { keyText } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts b/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts index ac765c2d0..da937759e 100644 --- a/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts +++ b/packages/coding-agent/src/modes/interactive/components/compaction-summary-message.ts @@ -1,4 +1,4 @@ -import { Container, getGlyphs, Markdown, type MarkdownTheme, Text } from "@earendil-works/diffex-tui"; +import { Container, getGlyphs, Markdown, type MarkdownTheme, Text } from "@diffexai/diffex-tui"; import type { CompactionSummaryMessage } from "../../../core/messages.ts"; import { getMarkdownTheme, theme } from "../theme/theme.ts"; import { keyText } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/config-selector.ts b/packages/coding-agent/src/modes/interactive/components/config-selector.ts index a3b8e0058..99b1f6172 100644 --- a/packages/coding-agent/src/modes/interactive/components/config-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/config-selector.ts @@ -17,7 +17,7 @@ import { truncateToWidth, UNSELECTED_LIST_PREFIX, visibleWidth, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { CONFIG_DIR_NAME } from "../../../config.ts"; import type { PathMetadata, ResolvedPaths, ResolvedResource } from "../../../core/package-manager.ts"; import type { PackageSource, SettingsManager } from "../../../core/settings-manager.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/countdown-timer.ts b/packages/coding-agent/src/modes/interactive/components/countdown-timer.ts index 2615e4683..5409caa3b 100644 --- a/packages/coding-agent/src/modes/interactive/components/countdown-timer.ts +++ b/packages/coding-agent/src/modes/interactive/components/countdown-timer.ts @@ -2,7 +2,7 @@ * Reusable countdown timer for dialog components. */ -import type { TUI } from "@earendil-works/diffex-tui"; +import type { TUI } from "@diffexai/diffex-tui"; export class CountdownTimer { private intervalId: ReturnType | undefined; diff --git a/packages/coding-agent/src/modes/interactive/components/custom-editor.ts b/packages/coding-agent/src/modes/interactive/components/custom-editor.ts index 0591f0476..895f40529 100644 --- a/packages/coding-agent/src/modes/interactive/components/custom-editor.ts +++ b/packages/coding-agent/src/modes/interactive/components/custom-editor.ts @@ -1,4 +1,4 @@ -import { Editor, type EditorOptions, type EditorTheme, type TUI } from "@earendil-works/diffex-tui"; +import { Editor, type EditorOptions, type EditorTheme, type TUI } from "@diffexai/diffex-tui"; import type { AppKeybinding, KeybindingsManager } from "../../../core/keybindings.ts"; /** diff --git a/packages/coding-agent/src/modes/interactive/components/custom-entry.ts b/packages/coding-agent/src/modes/interactive/components/custom-entry.ts index 85a8d97e1..4a80f2bf4 100644 --- a/packages/coding-agent/src/modes/interactive/components/custom-entry.ts +++ b/packages/coding-agent/src/modes/interactive/components/custom-entry.ts @@ -1,5 +1,5 @@ -import type { Component } from "@earendil-works/diffex-tui"; -import { Container, getGlyphs, Spacer, Text } from "@earendil-works/diffex-tui"; +import type { Component } from "@diffexai/diffex-tui"; +import { Container, getGlyphs, Spacer, Text } from "@diffexai/diffex-tui"; import type { EntryRenderer } from "../../../core/extensions/types.ts"; import type { CustomEntry } from "../../../core/session-manager.ts"; import { theme } from "../theme/theme.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/custom-message.ts b/packages/coding-agent/src/modes/interactive/components/custom-message.ts index ea8e45722..fc5ac72f7 100644 --- a/packages/coding-agent/src/modes/interactive/components/custom-message.ts +++ b/packages/coding-agent/src/modes/interactive/components/custom-message.ts @@ -1,6 +1,6 @@ -import type { TextContent } from "@earendil-works/diffex-ai"; -import type { Component } from "@earendil-works/diffex-tui"; -import { Container, getGlyphs, Markdown, type MarkdownTheme, Spacer, Text } from "@earendil-works/diffex-tui"; +import type { TextContent } from "@diffexai/diffex-ai"; +import type { Component } from "@diffexai/diffex-tui"; +import { Container, getGlyphs, Markdown, type MarkdownTheme, Spacer, Text } from "@diffexai/diffex-tui"; import type { MessageRenderer } from "../../../core/extensions/types.ts"; import type { CustomMessage } from "../../../core/messages.ts"; import { getMarkdownTheme, theme } from "../theme/theme.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/daxnuts.ts b/packages/coding-agent/src/modes/interactive/components/daxnuts.ts index 1892f1068..1d56d7a41 100644 --- a/packages/coding-agent/src/modes/interactive/components/daxnuts.ts +++ b/packages/coding-agent/src/modes/interactive/components/daxnuts.ts @@ -4,7 +4,7 @@ * A heartfelt tribute to dax (@thdxr) for providing free Kimi K2.5 access via OpenCode. */ -import type { Component, TUI } from "@earendil-works/diffex-tui"; +import type { Component, TUI } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; // 32x32 RGB image of dax, hex encoded (3 bytes per pixel) diff --git a/packages/coding-agent/src/modes/interactive/components/diffex-path.ts b/packages/coding-agent/src/modes/interactive/components/diffex-path.ts index 6f5f11b4d..0d0af03cc 100644 --- a/packages/coding-agent/src/modes/interactive/components/diffex-path.ts +++ b/packages/coding-agent/src/modes/interactive/components/diffex-path.ts @@ -1,4 +1,4 @@ -import { type Component, getGlyphs, Spacer, truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import { type Component, getGlyphs, Spacer, truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; const EXTENDED_HINGE_MIN_COLUMNS = 80; diff --git a/packages/coding-agent/src/modes/interactive/components/diffex-welcome.ts b/packages/coding-agent/src/modes/interactive/components/diffex-welcome.ts index b5350ba35..468fa127f 100644 --- a/packages/coding-agent/src/modes/interactive/components/diffex-welcome.ts +++ b/packages/coding-agent/src/modes/interactive/components/diffex-welcome.ts @@ -1,4 +1,4 @@ -import { type Component, getGlyphs, sliceByColumn, Text, type TUI, visibleWidth } from "@earendil-works/diffex-tui"; +import { type Component, getGlyphs, sliceByColumn, Text, type TUI, visibleWidth } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; export const DIFFEX_LOGO_ART = [ diff --git a/packages/coding-agent/src/modes/interactive/components/dynamic-border.ts b/packages/coding-agent/src/modes/interactive/components/dynamic-border.ts index 36eef5dff..0f1f8c3b6 100644 --- a/packages/coding-agent/src/modes/interactive/components/dynamic-border.ts +++ b/packages/coding-agent/src/modes/interactive/components/dynamic-border.ts @@ -1,4 +1,4 @@ -import { type Component, getGlyphs } from "@earendil-works/diffex-tui"; +import { type Component, getGlyphs } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; /** diff --git a/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts b/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts index 1735186b3..5231baaba 100644 --- a/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts +++ b/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts @@ -1,5 +1,5 @@ import * as fs from "node:fs"; -import { Container, Image, Spacer, Text } from "@earendil-works/diffex-tui"; +import { Container, Image, Spacer, Text } from "@diffexai/diffex-tui"; import { getBundledInteractiveAssetPath } from "../../../config.ts"; import { theme } from "../theme/theme.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/evolution-menu.ts b/packages/coding-agent/src/modes/interactive/components/evolution-menu.ts index 30bcc0804..2fa0dde03 100644 --- a/packages/coding-agent/src/modes/interactive/components/evolution-menu.ts +++ b/packages/coding-agent/src/modes/interactive/components/evolution-menu.ts @@ -8,7 +8,7 @@ import { Text, TruncatedText, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { diffLines } from "diff"; import type { EvolutionHarnessVersionInfo, diff --git a/packages/coding-agent/src/modes/interactive/components/extension-editor.ts b/packages/coding-agent/src/modes/interactive/components/extension-editor.ts index b3fd18639..d336f8af2 100644 --- a/packages/coding-agent/src/modes/interactive/components/extension-editor.ts +++ b/packages/coding-agent/src/modes/interactive/components/extension-editor.ts @@ -12,7 +12,7 @@ import { Spacer, Text, type TUI, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { KeybindingsManager } from "../../../core/keybindings.ts"; import { editInExternalEditor } from "../external-editor.ts"; import { getEditorTheme, theme } from "../theme/theme.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/extension-input.ts b/packages/coding-agent/src/modes/interactive/components/extension-input.ts index b9e0994ca..cde089311 100644 --- a/packages/coding-agent/src/modes/interactive/components/extension-input.ts +++ b/packages/coding-agent/src/modes/interactive/components/extension-input.ts @@ -2,7 +2,7 @@ * Simple text input component for extensions. */ -import { Container, type Focusable, getKeybindings, Input, Spacer, Text, type TUI } from "@earendil-works/diffex-tui"; +import { Container, type Focusable, getKeybindings, Input, Spacer, Text, type TUI } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; import { CountdownTimer } from "./countdown-timer.ts"; import { keyHint } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/extension-selector.ts b/packages/coding-agent/src/modes/interactive/components/extension-selector.ts index 12163766c..40bb3b473 100644 --- a/packages/coding-agent/src/modes/interactive/components/extension-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/extension-selector.ts @@ -13,7 +13,7 @@ import { type TUI, truncateToWidth, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; import { CountdownTimer } from "./countdown-timer.ts"; import { keyHint, rawKeyHint } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/first-time-setup.ts b/packages/coding-agent/src/modes/interactive/components/first-time-setup.ts index 3585de201..c2099f594 100644 --- a/packages/coding-agent/src/modes/interactive/components/first-time-setup.ts +++ b/packages/coding-agent/src/modes/interactive/components/first-time-setup.ts @@ -6,7 +6,7 @@ import { Spacer, Text, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { type TerminalTheme, theme } from "../theme/theme.ts"; import { DIFFEX_LOGO_ART } from "./diffex-welcome.ts"; import { keyHint, rawKeyHint } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/footer.ts b/packages/coding-agent/src/modes/interactive/components/footer.ts index e5a31a480..ec12b1c90 100644 --- a/packages/coding-agent/src/modes/interactive/components/footer.ts +++ b/packages/coding-agent/src/modes/interactive/components/footer.ts @@ -1,5 +1,5 @@ import { isAbsolute, relative, resolve, sep } from "node:path"; -import { type Component, getGlyphs, truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import { type Component, getGlyphs, truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; import type { AgentSession } from "../../../core/agent-session.ts"; import { getCollaborationMode } from "../../../core/collaboration-mode.ts"; import type { ReadonlyFooterDataProvider } from "../../../core/footer-data-provider.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/harness-version-selector.ts b/packages/coding-agent/src/modes/interactive/components/harness-version-selector.ts index edef51ba2..3918a19e2 100644 --- a/packages/coding-agent/src/modes/interactive/components/harness-version-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/harness-version-selector.ts @@ -1,4 +1,4 @@ -import { computeHarnessSkillId, type HarnessSkill } from "@earendil-works/diffex-harness-state"; +import { computeHarnessSkillId, type HarnessSkill } from "@diffexai/diffex-harness-state"; import { Container, type Focusable, @@ -11,7 +11,7 @@ import { Text, TruncatedText, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { EvolutionHarnessVersionInfo } from "#evolution"; import { theme } from "../theme/theme.ts"; import { diff --git a/packages/coding-agent/src/modes/interactive/components/keybinding-hints.ts b/packages/coding-agent/src/modes/interactive/components/keybinding-hints.ts index 0151ac57d..91993cba9 100644 --- a/packages/coding-agent/src/modes/interactive/components/keybinding-hints.ts +++ b/packages/coding-agent/src/modes/interactive/components/keybinding-hints.ts @@ -2,7 +2,7 @@ * Utilities for formatting keybinding hints in the UI. */ -import { getKeybindings, type Keybinding, type KeyId } from "@earendil-works/diffex-tui"; +import { getKeybindings, type Keybinding, type KeyId } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; export interface KeyTextFormatOptions { diff --git a/packages/coding-agent/src/modes/interactive/components/login-dialog.ts b/packages/coding-agent/src/modes/interactive/components/login-dialog.ts index 24582b718..5cb96d4da 100644 --- a/packages/coding-agent/src/modes/interactive/components/login-dialog.ts +++ b/packages/coding-agent/src/modes/interactive/components/login-dialog.ts @@ -1,5 +1,5 @@ -import type { AuthInfoLink, OAuthDeviceCodeInfo } from "@earendil-works/diffex-ai"; -import { Container, type Focusable, getKeybindings, Input, Spacer, Text, type TUI } from "@earendil-works/diffex-tui"; +import type { AuthInfoLink, OAuthDeviceCodeInfo } from "@diffexai/diffex-ai"; +import { Container, type Focusable, getKeybindings, Input, Spacer, Text, type TUI } from "@diffexai/diffex-tui"; import { openBrowser } from "../../../utils/open-browser.ts"; import { theme } from "../theme/theme.ts"; import { keyHint } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/mermaid.ts b/packages/coding-agent/src/modes/interactive/components/mermaid.ts index 421ed7718..dc8d7901b 100644 --- a/packages/coding-agent/src/modes/interactive/components/mermaid.ts +++ b/packages/coding-agent/src/modes/interactive/components/mermaid.ts @@ -1,4 +1,4 @@ -import { Marked, type Token } from "@earendil-works/diffex-tui"; +import { Marked, type Token } from "@diffexai/diffex-tui"; import { type MermaidArt, render, type Span } from "grok-mermaid"; import type { MarkdownTransformer } from "../../../core/extensions/types.ts"; import type { MermaidRenderingMode } from "../../../core/settings-manager.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/model-selector.ts b/packages/coding-agent/src/modes/interactive/components/model-selector.ts index d77447932..45b9f831a 100644 --- a/packages/coding-agent/src/modes/interactive/components/model-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/model-selector.ts @@ -1,4 +1,4 @@ -import { type Model, modelsAreEqual } from "@earendil-works/diffex-ai"; +import { type Model, modelsAreEqual } from "@diffexai/diffex-ai"; import { Container, type Focusable, @@ -11,7 +11,7 @@ import { Text, type TUI, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { ModelRuntime } from "../../../core/model-runtime.ts"; import type { SettingsManager } from "../../../core/settings-manager.ts"; import { getModelSelectorSearchText } from "../model-search.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/oauth-selector.ts b/packages/coding-agent/src/modes/interactive/components/oauth-selector.ts index 782a59e0d..538df98c5 100644 --- a/packages/coding-agent/src/modes/interactive/components/oauth-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/oauth-selector.ts @@ -1,4 +1,4 @@ -import type { ApiKeyAuth, AuthCheck, OAuthAuth } from "@earendil-works/diffex-ai"; +import type { ApiKeyAuth, AuthCheck, OAuthAuth } from "@diffexai/diffex-ai"; import { Container, type Focusable, @@ -10,7 +10,7 @@ import { Spacer, TruncatedText, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; export type AuthSelectorProvider = { diff --git a/packages/coding-agent/src/modes/interactive/components/request-user-input.ts b/packages/coding-agent/src/modes/interactive/components/request-user-input.ts index f679293d1..ec6386c39 100644 --- a/packages/coding-agent/src/modes/interactive/components/request-user-input.ts +++ b/packages/coding-agent/src/modes/interactive/components/request-user-input.ts @@ -9,7 +9,7 @@ import { UNSELECTED_LIST_PREFIX, visibleWidth, wrapTextWithAnsi, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { RequestUserInputAnswer, RequestUserInputQuestion, diff --git a/packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts b/packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts index 59ab2ceb7..518485fe8 100644 --- a/packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/scoped-models-selector.ts @@ -1,4 +1,4 @@ -import type { Model } from "@earendil-works/diffex-ai"; +import type { Model } from "@diffexai/diffex-ai"; import { Container, type Focusable, @@ -12,7 +12,7 @@ import { Spacer, Text, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { getModelSearchText } from "../model-search.ts"; import { theme } from "../theme/theme.ts"; import { keyText } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/session-selector-search.ts b/packages/coding-agent/src/modes/interactive/components/session-selector-search.ts index 8a82325ea..30d38a24c 100644 --- a/packages/coding-agent/src/modes/interactive/components/session-selector-search.ts +++ b/packages/coding-agent/src/modes/interactive/components/session-selector-search.ts @@ -1,4 +1,4 @@ -import { fuzzyMatch } from "@earendil-works/diffex-tui"; +import { fuzzyMatch } from "@diffexai/diffex-tui"; import type { SessionInfo } from "../../../core/session-manager.ts"; export type SortMode = "threaded" | "recent" | "relevance"; diff --git a/packages/coding-agent/src/modes/interactive/components/session-selector.ts b/packages/coding-agent/src/modes/interactive/components/session-selector.ts index 28d4c1bac..4577197e2 100644 --- a/packages/coding-agent/src/modes/interactive/components/session-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/session-selector.ts @@ -15,7 +15,7 @@ import { truncateToWidth, UNSELECTED_LIST_PREFIX, visibleWidth, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { KeybindingsManager } from "../../../core/keybindings.ts"; import type { SessionInfo, SessionListProgress } from "../../../core/session-manager.ts"; import { deleteParentSessionWithOwnedSubagents } from "../../../core/subagents/persistence.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/settings-selector.ts b/packages/coding-agent/src/modes/interactive/components/settings-selector.ts index 571dd887b..1d5f1cf30 100644 --- a/packages/coding-agent/src/modes/interactive/components/settings-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/settings-selector.ts @@ -1,4 +1,4 @@ -import type { Transport } from "@earendil-works/diffex-ai"; +import type { Transport } from "@diffexai/diffex-ai"; import { type Component, Container, @@ -12,7 +12,7 @@ import { SettingsList, Spacer, Text, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { formatHttpIdleTimeoutMs, HTTP_IDLE_TIMEOUT_CHOICES } from "../../../core/http-dispatcher.ts"; import type { DefaultProjectTrust, diff --git a/packages/coding-agent/src/modes/interactive/components/show-images-selector.ts b/packages/coding-agent/src/modes/interactive/components/show-images-selector.ts index df9913043..bf09b67f6 100644 --- a/packages/coding-agent/src/modes/interactive/components/show-images-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/show-images-selector.ts @@ -5,7 +5,7 @@ import { type SelectListLayoutOptions, Spacer, Text, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { getSelectListTheme, theme } from "../theme/theme.ts"; const SHOW_IMAGES_SELECT_LIST_LAYOUT: SelectListLayoutOptions = { diff --git a/packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts b/packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts index 14c0f4c80..af60eb408 100644 --- a/packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts +++ b/packages/coding-agent/src/modes/interactive/components/skill-invocation-message.ts @@ -1,4 +1,4 @@ -import { Container, getGlyphs, Markdown, type MarkdownTheme, Text } from "@earendil-works/diffex-tui"; +import { Container, getGlyphs, Markdown, type MarkdownTheme, Text } from "@diffexai/diffex-tui"; import type { ParsedSkillBlock } from "../../../core/agent-session.ts"; import { getMarkdownTheme, theme } from "../theme/theme.ts"; import { keyText } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/skill-selector.ts b/packages/coding-agent/src/modes/interactive/components/skill-selector.ts index f88768794..94bd0f5ed 100644 --- a/packages/coding-agent/src/modes/interactive/components/skill-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/skill-selector.ts @@ -9,7 +9,7 @@ import { Spacer, TruncatedText, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { SkillReference, SkillReferenceGroup } from "../../../core/skills.ts"; import { theme } from "../theme/theme.ts"; import { keyHint, rawKeyHint } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/status-indicator.ts b/packages/coding-agent/src/modes/interactive/components/status-indicator.ts index 56b12019c..43e5213cb 100644 --- a/packages/coding-agent/src/modes/interactive/components/status-indicator.ts +++ b/packages/coding-agent/src/modes/interactive/components/status-indicator.ts @@ -1,4 +1,4 @@ -import { type Component, getGlyphs, Loader, type LoaderIndicatorOptions, type TUI } from "@earendil-works/diffex-tui"; +import { type Component, getGlyphs, Loader, type LoaderIndicatorOptions, type TUI } from "@diffexai/diffex-tui"; import type { WorkingIndicatorOptions } from "../../../core/extensions/index.ts"; import { theme } from "../theme/theme.ts"; import { CountdownTimer } from "./countdown-timer.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/subagents.ts b/packages/coding-agent/src/modes/interactive/components/subagents.ts index 182c26a97..44354ffaa 100644 --- a/packages/coding-agent/src/modes/interactive/components/subagents.ts +++ b/packages/coding-agent/src/modes/interactive/components/subagents.ts @@ -1,4 +1,4 @@ -import { type Component, truncateToWidth } from "@earendil-works/diffex-tui"; +import { type Component, truncateToWidth } from "@diffexai/diffex-tui"; import type { SubagentStatus, SubagentSummary } from "../../../core/subagents/types.ts"; import { type ThemeColor, theme } from "../theme/theme.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/theme-selector.ts b/packages/coding-agent/src/modes/interactive/components/theme-selector.ts index 35405acf0..d70ba2a4b 100644 --- a/packages/coding-agent/src/modes/interactive/components/theme-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/theme-selector.ts @@ -5,7 +5,7 @@ import { type SelectListLayoutOptions, Spacer, Text, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { getAvailableThemes, getSelectListTheme, theme } from "../theme/theme.ts"; const THEME_SELECT_LIST_LAYOUT: SelectListLayoutOptions = { diff --git a/packages/coding-agent/src/modes/interactive/components/thinking-selector.ts b/packages/coding-agent/src/modes/interactive/components/thinking-selector.ts index c71b78c93..392500640 100644 --- a/packages/coding-agent/src/modes/interactive/components/thinking-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/thinking-selector.ts @@ -1,4 +1,4 @@ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; import { Container, type SelectItem, @@ -6,7 +6,7 @@ import { type SelectListLayoutOptions, Spacer, Text, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { getSelectListTheme, theme } from "../theme/theme.ts"; import { keyHint } from "./keybinding-hints.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/tool-execution.ts b/packages/coding-agent/src/modes/interactive/components/tool-execution.ts index 65bc2d5ae..e9f9e1866 100644 --- a/packages/coding-agent/src/modes/interactive/components/tool-execution.ts +++ b/packages/coding-agent/src/modes/interactive/components/tool-execution.ts @@ -8,7 +8,7 @@ import { Spacer, Text, type TUI, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { ToolDefinition, ToolRenderContext } from "../../../core/extensions/types.ts"; import { createAllToolDefinitions, type ToolName } from "../../../core/tools/index.ts"; import { getTextOutput as getRenderedTextOutput } from "../../../core/tools/render-utils.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/tool-group.ts b/packages/coding-agent/src/modes/interactive/components/tool-group.ts index 2e90c70ce..abee5ca34 100644 --- a/packages/coding-agent/src/modes/interactive/components/tool-group.ts +++ b/packages/coding-agent/src/modes/interactive/components/tool-group.ts @@ -1,4 +1,4 @@ -import { type Component, truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import { type Component, truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; import { DiffexPathDockHinge, diff --git a/packages/coding-agent/src/modes/interactive/components/tree-selector.ts b/packages/coding-agent/src/modes/interactive/components/tree-selector.ts index f61aa77c5..84cd2dfdf 100644 --- a/packages/coding-agent/src/modes/interactive/components/tree-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/tree-selector.ts @@ -14,7 +14,7 @@ import { UNSELECTED_LIST_PREFIX, visibleWidth, wrapTextWithAnsi, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import type { SessionTreeNode } from "../../../core/session-manager.ts"; import { theme } from "../theme/theme.ts"; import { DynamicBorder } from "./dynamic-border.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/trust-selector.ts b/packages/coding-agent/src/modes/interactive/components/trust-selector.ts index 3e8de8edf..2004b31fa 100644 --- a/packages/coding-agent/src/modes/interactive/components/trust-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/trust-selector.ts @@ -6,7 +6,7 @@ import { Spacer, Text, UNSELECTED_LIST_PREFIX, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { getProjectTrustOptions, type ProjectTrustOption, diff --git a/packages/coding-agent/src/modes/interactive/components/user-message-selector.ts b/packages/coding-agent/src/modes/interactive/components/user-message-selector.ts index 198ea9258..4ba7e930a 100644 --- a/packages/coding-agent/src/modes/interactive/components/user-message-selector.ts +++ b/packages/coding-agent/src/modes/interactive/components/user-message-selector.ts @@ -9,7 +9,7 @@ import { truncateToWidth, UNSELECTED_LIST_PREFIX, visibleWidth, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import { theme } from "../theme/theme.ts"; interface UserMessageItem { diff --git a/packages/coding-agent/src/modes/interactive/components/user-message.ts b/packages/coding-agent/src/modes/interactive/components/user-message.ts index f29b21b77..542b775fa 100644 --- a/packages/coding-agent/src/modes/interactive/components/user-message.ts +++ b/packages/coding-agent/src/modes/interactive/components/user-message.ts @@ -1,4 +1,4 @@ -import { Box, Container, getGlyphs, Markdown, type MarkdownTheme, Spacer } from "@earendil-works/diffex-tui"; +import { Box, Container, getGlyphs, Markdown, type MarkdownTheme, Spacer } from "@diffexai/diffex-tui"; import type { MarkdownTransformer } from "../../../core/extensions/types.ts"; import { getMarkdownTheme, theme } from "../theme/theme.ts"; import { createMarkdownTransform } from "./markdown-transform.ts"; diff --git a/packages/coding-agent/src/modes/interactive/components/visual-truncate.ts b/packages/coding-agent/src/modes/interactive/components/visual-truncate.ts index 1975dab67..f956cdb11 100644 --- a/packages/coding-agent/src/modes/interactive/components/visual-truncate.ts +++ b/packages/coding-agent/src/modes/interactive/components/visual-truncate.ts @@ -3,7 +3,7 @@ * Used by both tool-execution.ts and bash-execution.ts for consistent behavior. */ -import { Text } from "@earendil-works/diffex-tui"; +import { Text } from "@diffexai/diffex-tui"; export interface VisualTruncateResult { /** The visual lines to display */ diff --git a/packages/coding-agent/src/modes/interactive/interactive-mode.ts b/packages/coding-agent/src/modes/interactive/interactive-mode.ts index 0db7e5b1f..de861ebbb 100644 --- a/packages/coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive/interactive-mode.ts @@ -7,10 +7,10 @@ import * as crypto from "node:crypto"; import * as fs from "node:fs"; import * as os from "node:os"; import * as path from "node:path"; -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { AuthEvent, AuthPrompt } from "@earendil-works/diffex-ai"; -import type { AssistantMessage, ImageContent, Message, Model } from "@earendil-works/diffex-ai/compat"; -import type { HarnessVersionList } from "@earendil-works/diffex-harness-state"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { AuthEvent, AuthPrompt } from "@diffexai/diffex-ai"; +import type { AssistantMessage, ImageContent, Message, Model } from "@diffexai/diffex-ai/compat"; +import type { HarnessVersionList } from "@diffexai/diffex-harness-state"; import type { AutocompleteItem, AutocompleteProvider, @@ -24,8 +24,8 @@ import type { SlashCommand, Terminal, TuiMainScreenRenderState, -} from "@earendil-works/diffex-tui"; -import * as TuiLayouts from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; +import * as TuiLayouts from "@diffexai/diffex-tui"; import { CombinedAutocompleteProvider, type Component, @@ -45,7 +45,7 @@ import { TuiAltScreen, TuiMainScreen, visibleWidth, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import chalk from "chalk"; import { spawn, spawnSync } from "child_process"; import { diff --git a/packages/coding-agent/src/modes/interactive/theme/theme-controller.ts b/packages/coding-agent/src/modes/interactive/theme/theme-controller.ts index 3c395da65..93f813e2d 100644 --- a/packages/coding-agent/src/modes/interactive/theme/theme-controller.ts +++ b/packages/coding-agent/src/modes/interactive/theme/theme-controller.ts @@ -1,4 +1,4 @@ -import type { TUI } from "@earendil-works/diffex-tui"; +import type { TUI } from "@diffexai/diffex-tui"; import type { SettingsManager } from "../../../core/settings-manager.ts"; import { detectTerminalBackgroundFromEnv, diff --git a/packages/coding-agent/src/modes/interactive/theme/theme.ts b/packages/coding-agent/src/modes/interactive/theme/theme.ts index 29dee46a2..4e8a56d51 100644 --- a/packages/coding-agent/src/modes/interactive/theme/theme.ts +++ b/packages/coding-agent/src/modes/interactive/theme/theme.ts @@ -1,6 +1,6 @@ import * as fs from "node:fs"; import * as path from "node:path"; -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; import { type EditorTheme, getCapabilities, @@ -9,7 +9,7 @@ import { SELECTED_LIST_PREFIX, type SelectListTheme, type SettingsListTheme, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; import chalk from "chalk"; import { type Static, Type } from "typebox"; import { Compile } from "typebox/compile"; @@ -858,7 +858,7 @@ export function getDefaultTheme(): string { // ============================================================================ // Use globalThis to share theme across module loaders (tsx + jiti in dev mode) -const THEME_KEY = Symbol.for("@earendil-works/diffex-coding-agent:theme"); +const THEME_KEY = Symbol.for("@diffexai/diffex:theme"); const THEME_KEY_OLD = Symbol.for("@mariozechner/pi-coding-agent:theme"); // Export theme as a getter that reads from globalThis diff --git a/packages/coding-agent/src/modes/print-mode.ts b/packages/coding-agent/src/modes/print-mode.ts index f09c78d9f..e99e0833f 100644 --- a/packages/coding-agent/src/modes/print-mode.ts +++ b/packages/coding-agent/src/modes/print-mode.ts @@ -6,7 +6,7 @@ * - `diffex --mode json "prompt"` - JSON event stream */ -import type { AssistantMessage, ImageContent } from "@earendil-works/diffex-ai"; +import type { AssistantMessage, ImageContent } from "@diffexai/diffex-ai"; import type { AgentSessionRuntime } from "../core/agent-session-runtime.ts"; import { flushRawStdout, waitForRawStdoutBackpressure, writeRawStdout } from "../core/output-guard.ts"; import { killTrackedDetachedChildren } from "../utils/shell.ts"; diff --git a/packages/coding-agent/src/modes/rpc/rpc-client.ts b/packages/coding-agent/src/modes/rpc/rpc-client.ts index 30f37b164..238545ff2 100644 --- a/packages/coding-agent/src/modes/rpc/rpc-client.ts +++ b/packages/coding-agent/src/modes/rpc/rpc-client.ts @@ -5,8 +5,8 @@ */ import { type ChildProcess, spawn } from "node:child_process"; -import type { AgentMessage, ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import type { ImageContent } from "@earendil-works/diffex-ai"; +import type { AgentMessage, ThinkingLevel } from "@diffexai/diffex-agent-core"; +import type { ImageContent } from "@diffexai/diffex-ai"; import type { SessionStats } from "../../core/agent-session.ts"; import type { BashResult } from "../../core/bash-executor.ts"; import type { CompactionResult } from "../../core/compaction/index.ts"; diff --git a/packages/coding-agent/src/modes/rpc/rpc-types.ts b/packages/coding-agent/src/modes/rpc/rpc-types.ts index a20875953..b1fefe394 100644 --- a/packages/coding-agent/src/modes/rpc/rpc-types.ts +++ b/packages/coding-agent/src/modes/rpc/rpc-types.ts @@ -5,8 +5,8 @@ * Responses and events are emitted as JSON lines on stdout. */ -import type { AgentMessage, ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import type { ImageContent, Model } from "@earendil-works/diffex-ai"; +import type { AgentMessage, ThinkingLevel } from "@diffexai/diffex-agent-core"; +import type { ImageContent, Model } from "@diffexai/diffex-ai"; import type { SessionStats } from "../../core/agent-session.ts"; import type { BashResult } from "../../core/bash-executor.ts"; import type { CompactionResult } from "../../core/compaction/index.ts"; diff --git a/packages/coding-agent/src/package-manager-cli.ts b/packages/coding-agent/src/package-manager-cli.ts index f4e88685b..48fa02f29 100644 --- a/packages/coding-agent/src/package-manager-cli.ts +++ b/packages/coding-agent/src/package-manager-cli.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { Markdown, type MarkdownTheme } from "@earendil-works/diffex-tui"; +import { Markdown, type MarkdownTheme } from "@diffexai/diffex-tui"; import chalk from "chalk"; import { selectConfig } from "./cli/config-selector.ts"; import { createProjectTrustContext } from "./cli/project-trust.ts"; diff --git a/packages/coding-agent/src/server/create-harness.ts b/packages/coding-agent/src/server/create-harness.ts index 5d17b5c10..c77e63b5a 100644 --- a/packages/coding-agent/src/server/create-harness.ts +++ b/packages/coding-agent/src/server/create-harness.ts @@ -9,7 +9,7 @@ import { type ExecutionEnv, type ExecutionToolContext, type HarnessTool, -} from "@earendil-works/diffex-agent-core"; +} from "@diffexai/diffex-agent-core"; import type { Static, TSchema } from "typebox"; import { type BuildSystemPromptOptions, buildSystemPrompt } from "../core/system-prompt.ts"; import { bashToolSystemPromptContribution } from "../core/tools/bash.ts"; diff --git a/packages/coding-agent/src/utils/changelog.ts b/packages/coding-agent/src/utils/changelog.ts index 2bb87f800..bf579d016 100644 --- a/packages/coding-agent/src/utils/changelog.ts +++ b/packages/coding-agent/src/utils/changelog.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import { visibleWidth } from "@earendil-works/diffex-tui"; +import { visibleWidth } from "@diffexai/diffex-tui"; import { existsSync, readFileSync } from "fs"; export interface ChangelogEntry { diff --git a/packages/coding-agent/src/utils/tool-result-images.ts b/packages/coding-agent/src/utils/tool-result-images.ts index a8d981738..2c35d289d 100644 --- a/packages/coding-agent/src/utils/tool-result-images.ts +++ b/packages/coding-agent/src/utils/tool-result-images.ts @@ -1,4 +1,4 @@ -import type { ImageContent, TextContent } from "@earendil-works/diffex-ai"; +import type { ImageContent, TextContent } from "@diffexai/diffex-ai"; import { processImage } from "./image-process.ts"; export type ToolResultContent = TextContent | ImageContent; diff --git a/packages/coding-agent/test/agent-session-auto-compaction-queue.test.ts b/packages/coding-agent/test/agent-session-auto-compaction-queue.test.ts index d376c50bf..bc346f6f3 100644 --- a/packages/coding-agent/test/agent-session-auto-compaction-queue.test.ts +++ b/packages/coding-agent/test/agent-session-auto-compaction-queue.test.ts @@ -1,13 +1,9 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; -import { - type AssistantMessage, - createAssistantMessageEventStream, - fauxAssistantMessage, -} from "@earendil-works/diffex-ai"; -import { getModel, streamSimple } from "@earendil-works/diffex-ai/compat"; +import { Agent } from "@diffexai/diffex-agent-core"; +import { type AssistantMessage, createAssistantMessageEventStream, fauxAssistantMessage } from "@diffexai/diffex-ai"; +import { getModel, streamSimple } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { AgentSession } from "../src/core/agent-session.ts"; import { AuthStorage } from "../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/agent-session-branching.test.ts b/packages/coding-agent/test/agent-session-branching.test.ts index 198dec4ec..f26ce43e6 100644 --- a/packages/coding-agent/test/agent-session-branching.test.ts +++ b/packages/coding-agent/test/agent-session-branching.test.ts @@ -10,7 +10,7 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import type { AgentSession } from "../src/core/agent-session.ts"; import { diff --git a/packages/coding-agent/test/agent-session-compaction.test.ts b/packages/coding-agent/test/agent-session-compaction.test.ts index cabdf3634..c0e2d6569 100644 --- a/packages/coding-agent/test/agent-session-compaction.test.ts +++ b/packages/coding-agent/test/agent-session-compaction.test.ts @@ -11,8 +11,8 @@ import { createModelRegistry, getModelRuntime } from "./model-runtime-test-utils import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; -import { getModel, streamSimple } from "@earendil-works/diffex-ai/compat"; +import { Agent } from "@diffexai/diffex-agent-core"; +import { getModel, streamSimple } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AgentSession, type AgentSessionEvent } from "../src/core/agent-session.ts"; import { AuthStorage } from "../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/agent-session-concurrent.test.ts b/packages/coding-agent/test/agent-session-concurrent.test.ts index f46a7a592..ad3488ddc 100644 --- a/packages/coding-agent/test/agent-session-concurrent.test.ts +++ b/packages/coding-agent/test/agent-session-concurrent.test.ts @@ -6,7 +6,7 @@ import { createModelRegistry, getModelRuntime } from "./model-runtime-test-utils import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; +import { Agent } from "@diffexai/diffex-agent-core"; import { type AssistantMessage, type AssistantMessageEvent, @@ -14,7 +14,7 @@ import { getModel, type ImageContent, type TextContent, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AgentSession } from "../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/agent-session-dynamic-provider.test.ts b/packages/coding-agent/test/agent-session-dynamic-provider.test.ts index 98956be05..c1dff8c10 100644 --- a/packages/coding-agent/test/agent-session-dynamic-provider.test.ts +++ b/packages/coding-agent/test/agent-session-dynamic-provider.test.ts @@ -1,8 +1,8 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { Provider } from "@earendil-works/diffex-ai"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import type { Provider } from "@diffexai/diffex-ai"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { ModelRuntime } from "../src/core/model-runtime.ts"; diff --git a/packages/coding-agent/test/agent-session-dynamic-tools.test.ts b/packages/coding-agent/test/agent-session-dynamic-tools.test.ts index ab711e042..ddf14c0c9 100644 --- a/packages/coding-agent/test/agent-session-dynamic-tools.test.ts +++ b/packages/coding-agent/test/agent-session-dynamic-tools.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { DefaultResourceLoader } from "../src/core/resource-loader.ts"; diff --git a/packages/coding-agent/test/agent-session-retry.test.ts b/packages/coding-agent/test/agent-session-retry.test.ts index c32a437b2..9427efd00 100644 --- a/packages/coding-agent/test/agent-session-retry.test.ts +++ b/packages/coding-agent/test/agent-session-retry.test.ts @@ -1,13 +1,8 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent, type AgentEvent, type AgentTool } from "@earendil-works/diffex-agent-core"; -import { - type AssistantMessage, - type AssistantMessageEvent, - EventStream, - getModel, -} from "@earendil-works/diffex-ai/compat"; +import { Agent, type AgentEvent, type AgentTool } from "@diffexai/diffex-agent-core"; +import { type AssistantMessage, type AssistantMessageEvent, EventStream, getModel } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AgentSession } from "../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/agent-session-runtime-events.test.ts b/packages/coding-agent/test/agent-session-runtime-events.test.ts index 409adf295..f3d15c943 100644 --- a/packages/coding-agent/test/agent-session-runtime-events.test.ts +++ b/packages/coding-agent/test/agent-session-runtime-events.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { fauxAssistantMessage, registerFauxProvider } from "@earendil-works/diffex-ai/compat"; +import { fauxAssistantMessage, registerFauxProvider } from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it } from "vitest"; import { type CreateAgentSessionRuntimeFactory, diff --git a/packages/coding-agent/test/agent-session-stats.test.ts b/packages/coding-agent/test/agent-session-stats.test.ts index cb2d38b11..26739d5a7 100644 --- a/packages/coding-agent/test/agent-session-stats.test.ts +++ b/packages/coding-agent/test/agent-session-stats.test.ts @@ -1,11 +1,11 @@ -import { Agent } from "@earendil-works/diffex-agent-core"; +import { Agent } from "@diffexai/diffex-agent-core"; import { type AssistantMessage, getModel, streamSimple, type ToolResultMessage, type Usage, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import { describe, expect, it } from "vitest"; import { AgentSession } from "../src/core/agent-session.ts"; import { AuthStorage } from "../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/assistant-message.test.ts b/packages/coding-agent/test/assistant-message.test.ts index 65f6ec891..349c82f0d 100644 --- a/packages/coding-agent/test/assistant-message.test.ts +++ b/packages/coding-agent/test/assistant-message.test.ts @@ -1,5 +1,5 @@ -import type { AssistantMessage } from "@earendil-works/diffex-ai"; -import { getGlyphs } from "@earendil-works/diffex-tui"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; +import { getGlyphs } from "@diffexai/diffex-tui"; import { describe, expect, test } from "vitest"; import { AssistantMessageComponent, diff --git a/packages/coding-agent/test/auth-check.test.ts b/packages/coding-agent/test/auth-check.test.ts index ce9e84b48..f47afaad6 100644 --- a/packages/coding-agent/test/auth-check.test.ts +++ b/packages/coding-agent/test/auth-check.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { InMemoryModelsStore } from "@earendil-works/diffex-ai"; +import { InMemoryModelsStore } from "@diffexai/diffex-ai"; import { afterEach, beforeEach, describe, expect, test, vi } from "vitest"; import { parseArgs } from "../src/cli/args.ts"; import { checkProviderAuth, createAuthCheckModelRuntime, getProviderCredential } from "../src/cli/auth-check.ts"; diff --git a/packages/coding-agent/test/auth-storage.test.ts b/packages/coding-agent/test/auth-storage.test.ts index 73a2d14ed..965d9176a 100644 --- a/packages/coding-agent/test/auth-storage.test.ts +++ b/packages/coding-agent/test/auth-storage.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { type CredentialStore, createModels, type Provider } from "@earendil-works/diffex-ai"; +import { type CredentialStore, createModels, type Provider } from "@diffexai/diffex-ai"; import lockfile from "proper-lockfile"; import { afterEach, beforeEach, describe, expect, test, vi } from "vitest"; import { AuthStorage, FileAuthStorageBackend } from "../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/bash-execution-width.test.ts b/packages/coding-agent/test/bash-execution-width.test.ts index ed6bc6876..69d9352b1 100644 --- a/packages/coding-agent/test/bash-execution-width.test.ts +++ b/packages/coding-agent/test/bash-execution-width.test.ts @@ -2,7 +2,7 @@ * Test that BashExecutionComponent's collapsed output respects the render-time width, * not a stale captured width. Regression test for #2569. */ -import { getGlyphs, visibleWidth } from "@earendil-works/diffex-tui"; +import { getGlyphs, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, it } from "vitest"; import { BashExecutionComponent } from "../src/modes/interactive/components/bash-execution.ts"; import { initTheme } from "../src/modes/interactive/theme/theme.ts"; diff --git a/packages/coding-agent/test/branch-summary-extensions.test.ts b/packages/coding-agent/test/branch-summary-extensions.test.ts index 06e11c337..acb3e6546 100644 --- a/packages/coding-agent/test/branch-summary-extensions.test.ts +++ b/packages/coding-agent/test/branch-summary-extensions.test.ts @@ -1,4 +1,4 @@ -import type { Usage } from "@earendil-works/diffex-ai/compat"; +import type { Usage } from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "./suite/harness.ts"; import { assistantMsg, userMsg } from "./utilities.ts"; diff --git a/packages/coding-agent/test/cache-stats.test.ts b/packages/coding-agent/test/cache-stats.test.ts index 0536c8a5a..d070b1c8b 100644 --- a/packages/coding-agent/test/cache-stats.test.ts +++ b/packages/coding-agent/test/cache-stats.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage } from "@earendil-works/diffex-ai"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { collectCacheMisses, diff --git a/packages/coding-agent/test/client/remote-session-lifecycle.test.ts b/packages/coding-agent/test/client/remote-session-lifecycle.test.ts index cfe98b535..2e82bac86 100644 --- a/packages/coding-agent/test/client/remote-session-lifecycle.test.ts +++ b/packages/coding-agent/test/client/remote-session-lifecycle.test.ts @@ -1,4 +1,4 @@ -import type { RequestEnvelope } from "@earendil-works/diffex-protocol"; +import type { RequestEnvelope } from "@diffexai/diffex-protocol"; import { describe, expect, test } from "vitest"; import { collectRequests, connectClient, MemoryServer, openRemoteSession, sessionSnapshot } from "./support.ts"; diff --git a/packages/coding-agent/test/client/remote-session-ownership.test.ts b/packages/coding-agent/test/client/remote-session-ownership.test.ts index 82011c804..11cf9d01b 100644 --- a/packages/coding-agent/test/client/remote-session-ownership.test.ts +++ b/packages/coding-agent/test/client/remote-session-ownership.test.ts @@ -1,4 +1,4 @@ -import { DiffexSessionOwnershipError } from "@earendil-works/diffex-client"; +import { DiffexSessionOwnershipError } from "@diffexai/diffex-client"; import { describe, expect, test } from "vitest"; import { RemoteSession } from "../../src/client/remote-session.ts"; import { collectRequests, connectClient, MemoryServer, sessionSnapshot } from "./support.ts"; diff --git a/packages/coding-agent/test/client/support.ts b/packages/coding-agent/test/client/support.ts index f17d0e1cc..fb3192dd5 100644 --- a/packages/coding-agent/test/client/support.ts +++ b/packages/coding-agent/test/client/support.ts @@ -1,4 +1,4 @@ -import { type ByteTransport, type ByteTransportHandlers, DiffexClient } from "@earendil-works/diffex-client"; +import { type ByteTransport, type ByteTransportHandlers, DiffexClient } from "@diffexai/diffex-client"; import { type ClientMessage, ClientMessageDecoder, @@ -8,7 +8,7 @@ import { type ServerMessage, type ServerSnapshot, type SessionSnapshot, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { RemoteSession, type RemoteSessionOptions } from "../../src/client/remote-session.ts"; export class MemoryServer { diff --git a/packages/coding-agent/test/client/transcript.test.ts b/packages/coding-agent/test/client/transcript.test.ts index a1e6584ea..71310fea0 100644 --- a/packages/coding-agent/test/client/transcript.test.ts +++ b/packages/coding-agent/test/client/transcript.test.ts @@ -1,4 +1,4 @@ -import type { SessionSnapshot } from "@earendil-works/diffex-protocol"; +import type { SessionSnapshot } from "@diffexai/diffex-protocol"; import { describe, expect, test } from "vitest"; import { applyTranscriptProgress, diff --git a/packages/coding-agent/test/compaction-extensions-example.test.ts b/packages/coding-agent/test/compaction-extensions-example.test.ts index 71e437856..7ee515700 100644 --- a/packages/coding-agent/test/compaction-extensions-example.test.ts +++ b/packages/coding-agent/test/compaction-extensions-example.test.ts @@ -5,7 +5,7 @@ import { describe, expect, it, vi } from "vitest"; import type { ExtensionAPI, SessionBeforeCompactEvent, SessionCompactEvent } from "../src/core/extensions/index.ts"; -vi.mock("@earendil-works/diffex-coding-agent", () => ({ +vi.mock("@diffexai/diffex", () => ({ convertToLlm: (messages: unknown) => messages, serializeConversation: () => "conversation", })); diff --git a/packages/coding-agent/test/compaction-extensions.test.ts b/packages/coding-agent/test/compaction-extensions.test.ts index bfacf8693..c4331ca53 100644 --- a/packages/coding-agent/test/compaction-extensions.test.ts +++ b/packages/coding-agent/test/compaction-extensions.test.ts @@ -6,8 +6,8 @@ import { createModelRegistry, getModelRuntime } from "./model-runtime-test-utils import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; -import { getModel, streamSimple } from "@earendil-works/diffex-ai/compat"; +import { Agent } from "@diffexai/diffex-agent-core"; +import { getModel, streamSimple } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AgentSession } from "../src/core/agent-session.ts"; import { AuthStorage } from "../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/compaction-serialization.test.ts b/packages/coding-agent/test/compaction-serialization.test.ts index 00359dfd4..a12edaa94 100644 --- a/packages/coding-agent/test/compaction-serialization.test.ts +++ b/packages/coding-agent/test/compaction-serialization.test.ts @@ -1,4 +1,4 @@ -import type { Message } from "@earendil-works/diffex-ai"; +import type { Message } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { serializeConversation } from "../src/core/compaction/utils.ts"; diff --git a/packages/coding-agent/test/compaction-summary-reasoning.test.ts b/packages/coding-agent/test/compaction-summary-reasoning.test.ts index 56889217f..96810b84e 100644 --- a/packages/coding-agent/test/compaction-summary-reasoning.test.ts +++ b/packages/coding-agent/test/compaction-summary-reasoning.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, Model } from "@earendil-works/diffex-ai"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, Model } from "@diffexai/diffex-ai"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { type CompactionPreparation, @@ -12,8 +12,8 @@ const { completeSimpleMock } = vi.hoisted(() => ({ completeSimpleMock: vi.fn(), })); -vi.mock("@earendil-works/diffex-ai/compat", async (importOriginal) => { - const actual = await importOriginal(); +vi.mock("@diffexai/diffex-ai/compat", async (importOriginal) => { + const actual = await importOriginal(); return { ...actual, completeSimple: completeSimpleMock, diff --git a/packages/coding-agent/test/compaction.test.ts b/packages/coding-agent/test/compaction.test.ts index 72c9365f0..7923f42d0 100644 --- a/packages/coding-agent/test/compaction.test.ts +++ b/packages/coding-agent/test/compaction.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, Usage } from "@earendil-works/diffex-ai/compat"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, Usage } from "@diffexai/diffex-ai/compat"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { readFileSync } from "fs"; import { join } from "path"; import { beforeEach, describe, expect, it } from "vitest"; diff --git a/packages/coding-agent/test/config.test.ts b/packages/coding-agent/test/config.test.ts index 0feafd34c..f890de75f 100644 --- a/packages/coding-agent/test/config.test.ts +++ b/packages/coding-agent/test/config.test.ts @@ -62,8 +62,8 @@ afterEach(() => { function createNpmPrefixInstall(template = "diffex-prefix-"): { prefix: string; packageDir: string } { const prefix = mkdtempSync(join(tmpdir(), template)); const root = join(prefix, "lib", "node_modules"); - const scopeDir = join(root, "@earendil-works"); - const packageDir = join(scopeDir, "diffex-coding-agent"); + const scopeDir = join(root, "@diffexai"); + const packageDir = join(scopeDir, "diffex"); mkdirSync(packageDir, { recursive: true }); tempDir = prefix; process.env.DIFFEX_PACKAGE_DIR = packageDir; @@ -119,8 +119,8 @@ function createBunGlobalInstall(): { packageDir: string } { const prefix = join(temp, ".bun"); const bunBin = join(prefix, "bin"); const root = join(prefix, "install", "global", "node_modules"); - const scopeDir = join(root, "@earendil-works"); - const packageDir = join(scopeDir, "diffex-coding-agent"); + const scopeDir = join(root, "@diffexai"); + const packageDir = join(scopeDir, "diffex"); mkdirSync(packageDir, { recursive: true }); mkdirSync(bunBin, { recursive: true }); writeFileSync(join(bunBin, process.platform === "win32" ? "bun.cmd" : "bun"), createFakeBunScript(bunBin)); @@ -194,12 +194,12 @@ describe("Diffex configuration namespace", () => { describe("detectInstallMethod", () => { test("detects pnpm from Windows .pnpm install paths", () => { setExecPath( - "C:\\Users\\Admin\\Documents\\pnpm-repository\\global\\5\\.pnpm\\@earendil-works+diffex-coding-agent@0.67.68\\node_modules\\@earendil-works\\diffex-coding-agent\\dist\\cli.js", + "C:\\Users\\Admin\\Documents\\pnpm-repository\\global\\5\\.pnpm\\@diffexai+diffex@0.67.68\\node_modules\\@diffexai\\diffex\\dist\\cli.js", ); expect(detectInstallMethod()).toBe("pnpm"); - expect(getUpdateInstruction("@earendil-works/diffex-coding-agent")).toBe( - "Run: pnpm install -g --ignore-scripts --config.minimumReleaseAge=0 @earendil-works/diffex-coding-agent", + expect(getUpdateInstruction("@diffexai/diffex")).toBe( + "Run: pnpm install -g --ignore-scripts --config.minimumReleaseAge=0 @diffexai/diffex", ); }); @@ -207,39 +207,31 @@ describe("detectInstallMethod", () => { setExecPath("/usr/local/bin/node"); expect(detectInstallMethod()).toBe("unknown"); - expect(getSelfUpdateCommand("@earendil-works/diffex-coding-agent")).toBeUndefined(); - expect(getUpdateInstruction("@earendil-works/diffex-coding-agent")).toBe( - "Update @earendil-works/diffex-coding-agent using the package manager, wrapper, or source checkout that provides this installation.", + expect(getSelfUpdateCommand("@diffexai/diffex")).toBeUndefined(); + expect(getUpdateInstruction("@diffexai/diffex")).toBe( + "Update @diffexai/diffex using the package manager, wrapper, or source checkout that provides this installation.", ); }); test("self-updates npm installs from custom prefixes", () => { const { prefix } = createNpmPrefixInstall(); - const command = getSelfUpdateCommand("@earendil-works/diffex-coding-agent"); + const command = getSelfUpdateCommand("@diffexai/diffex"); expect(detectInstallMethod()).toBe("npm"); expect(command).toEqual({ command: "npm", - args: [ - "--prefix", - prefix, - "install", - "-g", - "--ignore-scripts", - "--min-release-age=0", - "@earendil-works/diffex-coding-agent", - ], - display: `npm --prefix ${prefix} install -g --ignore-scripts --min-release-age=0 @earendil-works/diffex-coding-agent`, + args: ["--prefix", prefix, "install", "-g", "--ignore-scripts", "--min-release-age=0", "@diffexai/diffex"], + display: `npm --prefix ${prefix} install -g --ignore-scripts --min-release-age=0 @diffexai/diffex`, }); }); test("self-updates exact npm versions without uninstalling the current package", () => { const { prefix } = createNpmPrefixInstall(); - const command = getSelfUpdateCommand("@earendil-works/diffex-coding-agent", undefined, { - packageName: "@earendil-works/diffex-coding-agent", - installSpec: "@earendil-works/diffex-coding-agent@1.2.3", + const command = getSelfUpdateCommand("@diffexai/diffex", undefined, { + packageName: "@diffexai/diffex", + installSpec: "@diffexai/diffex@1.2.3", }); expect(command).toEqual({ @@ -251,9 +243,9 @@ describe("detectInstallMethod", () => { "-g", "--ignore-scripts", "--min-release-age=0", - "@earendil-works/diffex-coding-agent@1.2.3", + "@diffexai/diffex@1.2.3", ], - display: `npm --prefix ${prefix} install -g --ignore-scripts --min-release-age=0 @earendil-works/diffex-coding-agent@1.2.3`, + display: `npm --prefix ${prefix} install -g --ignore-scripts --min-release-age=0 @diffexai/diffex@1.2.3`, }); }); @@ -284,27 +276,19 @@ describe("detectInstallMethod", () => { test("self-update respects configured npmCommand", () => { const { prefix } = createNpmPrefixInstall(); - const command = getSelfUpdateCommand("@earendil-works/diffex-coding-agent", ["npm", "--prefix", prefix]); + const command = getSelfUpdateCommand("@diffexai/diffex", ["npm", "--prefix", prefix]); expect(command).toEqual({ command: "npm", - args: [ - "--prefix", - prefix, - "install", - "-g", - "--ignore-scripts", - "--min-release-age=0", - "@earendil-works/diffex-coding-agent", - ], - display: `npm --prefix ${prefix} install -g --ignore-scripts --min-release-age=0 @earendil-works/diffex-coding-agent`, + args: ["--prefix", prefix, "install", "-g", "--ignore-scripts", "--min-release-age=0", "@diffexai/diffex"], + display: `npm --prefix ${prefix} install -g --ignore-scripts --min-release-age=0 @diffexai/diffex`, }); }); test("self-update treats empty npmCommand as unset", () => { const { prefix } = createNpmPrefixInstall(); - const command = getSelfUpdateCommand("@earendil-works/diffex-coding-agent", []); + const command = getSelfUpdateCommand("@diffexai/diffex", []); expect(command?.args).toEqual([ "--prefix", @@ -313,41 +297,41 @@ describe("detectInstallMethod", () => { "-g", "--ignore-scripts", "--min-release-age=0", - "@earendil-works/diffex-coding-agent", + "@diffexai/diffex", ]); }); test("quotes npm self-update display paths", () => { const { prefix } = createNpmPrefixInstall("pi prefix "); - const command = getSelfUpdateCommand("@earendil-works/diffex-coding-agent"); + const command = getSelfUpdateCommand("@diffexai/diffex"); expect(command?.display).toBe( - `npm --prefix "${prefix}" install -g --ignore-scripts --min-release-age=0 @earendil-works/diffex-coding-agent`, + `npm --prefix "${prefix}" install -g --ignore-scripts --min-release-age=0 @diffexai/diffex`, ); }); test("does not infer Windows npm custom prefixes from package paths", () => { - const packageDir = "C:\\Users\\Admin\\npm prefix\\node_modules\\@earendil-works\\diffex-coding-agent"; + const packageDir = "C:\\Users\\Admin\\npm prefix\\node_modules\\@diffexai\\diffex"; process.env.DIFFEX_PACKAGE_DIR = packageDir; setExecPath(`${packageDir}\\dist\\cli.js`); expect(detectInstallMethod()).toBe("npm"); - expect(getUpdateInstruction("@earendil-works/diffex-coding-agent")).toBe( - "Run: npm install -g --ignore-scripts --min-release-age=0 @earendil-works/diffex-coding-agent", + expect(getUpdateInstruction("@diffexai/diffex")).toBe( + "Run: npm install -g --ignore-scripts --min-release-age=0 @diffexai/diffex", ); }); test("self-updates bun global installs from bun pm bin", () => { createBunGlobalInstall(); - const command = getSelfUpdateCommand("@earendil-works/diffex-coding-agent"); + const command = getSelfUpdateCommand("@diffexai/diffex"); expect(detectInstallMethod()).toBe("bun"); expect(command).toEqual({ command: "bun", - args: ["install", "-g", "--ignore-scripts", "--minimum-release-age=0", "@earendil-works/diffex-coding-agent"], - display: "bun install -g --ignore-scripts --minimum-release-age=0 @earendil-works/diffex-coding-agent", + args: ["install", "-g", "--ignore-scripts", "--minimum-release-age=0", "@diffexai/diffex"], + display: "bun install -g --ignore-scripts --minimum-release-age=0 @diffexai/diffex", }); }); @@ -381,8 +365,8 @@ describe("detectInstallMethod", () => { const temp = mkdtempSync(join(tmpdir(), "diffex-pnpm11-")); const binDir = join(temp, "bin"); const root = join(temp, "Library", "pnpm", "global", "v11"); - const packageName = "@earendil-works/diffex-coding-agent"; - const globalPackageDir = join(root, "11e9a", "node_modules", "@earendil-works", "diffex-coding-agent"); + const packageName = "@diffexai/diffex"; + const globalPackageDir = join(root, "11e9a", "node_modules", "@diffexai", "diffex"); const storePackageDir = join( temp, "Library", @@ -390,13 +374,13 @@ describe("detectInstallMethod", () => { "store", "v11", "links", - "@earendil-works", - "diffex-coding-agent", + "@diffexai", + "diffex", "0.75.0", "hash", "node_modules", - "@earendil-works", - "diffex-coding-agent", + "@diffexai", + "diffex", ); mkdirSync(globalPackageDir, { recursive: true }); mkdirSync(storePackageDir, { recursive: true }); @@ -475,9 +459,7 @@ describe("detectInstallMethod", () => { const { packageDir } = createNpmPrefixInstall(); chmodSync(packageDir, 0o500); - expect(getSelfUpdateCommand("@earendil-works/diffex-coding-agent")).toBeUndefined(); - expect(getSelfUpdateUnavailableInstruction("@earendil-works/diffex-coding-agent")).toContain( - "the install path is not writable", - ); + expect(getSelfUpdateCommand("@diffexai/diffex")).toBeUndefined(); + expect(getSelfUpdateUnavailableInstruction("@diffexai/diffex")).toContain("the install path is not writable"); }); }); diff --git a/packages/coding-agent/test/credential-print.test.ts b/packages/coding-agent/test/credential-print.test.ts index 3f8d68f7e..e783d6961 100644 --- a/packages/coding-agent/test/credential-print.test.ts +++ b/packages/coding-agent/test/credential-print.test.ts @@ -1,4 +1,4 @@ -import { InMemoryModelsStore } from "@earendil-works/diffex-ai"; +import { InMemoryModelsStore } from "@diffexai/diffex-ai"; import { describe, expect, test, vi } from "vitest"; import { parseArgs } from "../src/cli/args.ts"; import { AuthCommandError, isAuthCommandHelp, parseAuthCommand } from "../src/cli/auth-command.ts"; diff --git a/packages/coding-agent/test/custom-editor-history-keybindings.test.ts b/packages/coding-agent/test/custom-editor-history-keybindings.test.ts index d17c3f66b..9bb4a366f 100644 --- a/packages/coding-agent/test/custom-editor-history-keybindings.test.ts +++ b/packages/coding-agent/test/custom-editor-history-keybindings.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { setKeybindings, TuiMainScreen } from "@diffexai/diffex-tui"; import { afterEach, describe, expect, it } from "vitest"; import { defaultEditorTheme } from "../../tui/test/test-themes.ts"; import { VirtualTerminal } from "../../tui/test/virtual-terminal.ts"; diff --git a/packages/coding-agent/test/custom-message.test.ts b/packages/coding-agent/test/custom-message.test.ts index 1fda47091..ed8d14d8c 100644 --- a/packages/coding-agent/test/custom-message.test.ts +++ b/packages/coding-agent/test/custom-message.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, Text } from "@earendil-works/diffex-tui"; +import { getGlyphs, Text } from "@diffexai/diffex-tui"; import { describe, expect, test } from "vitest"; import type { MessageRenderer, MessageRenderOptions } from "../src/core/extensions/types.ts"; import type { CustomMessage } from "../src/core/messages.ts"; diff --git a/packages/coding-agent/test/diffex-path.test.ts b/packages/coding-agent/test/diffex-path.test.ts index a129a9e8a..598e139db 100644 --- a/packages/coding-agent/test/diffex-path.test.ts +++ b/packages/coding-agent/test/diffex-path.test.ts @@ -1,4 +1,4 @@ -import { visibleWidth } from "@earendil-works/diffex-tui"; +import { visibleWidth } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, test } from "vitest"; import { DiffexPathDockHinge, diff --git a/packages/coding-agent/test/diffex-welcome.test.ts b/packages/coding-agent/test/diffex-welcome.test.ts index 74afc51f8..1b3545193 100644 --- a/packages/coding-agent/test/diffex-welcome.test.ts +++ b/packages/coding-agent/test/diffex-welcome.test.ts @@ -1,6 +1,6 @@ import { stripVTControlCharacters } from "node:util"; -import type { TUI } from "@earendil-works/diffex-tui"; -import { getGlyphs, visibleWidth } from "@earendil-works/diffex-tui"; +import type { TUI } from "@diffexai/diffex-tui"; +import { getGlyphs, visibleWidth } from "@diffexai/diffex-tui"; import { afterAll, afterEach, beforeEach, describe, expect, test, vi } from "vitest"; import { DIFFEX_LOGO_ART, diff --git a/packages/coding-agent/test/dynamic-border.test.ts b/packages/coding-agent/test/dynamic-border.test.ts index 152dcad88..237000413 100644 --- a/packages/coding-agent/test/dynamic-border.test.ts +++ b/packages/coding-agent/test/dynamic-border.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs } from "@earendil-works/diffex-tui"; +import { getGlyphs } from "@diffexai/diffex-tui"; import { describe, expect, it } from "vitest"; import { DynamicBorder } from "../src/modes/interactive/components/dynamic-border.ts"; diff --git a/packages/coding-agent/test/edit-tool-no-full-redraw.test.ts b/packages/coding-agent/test/edit-tool-no-full-redraw.test.ts index 8e1b2a57b..8e538c3ba 100644 --- a/packages/coding-agent/test/edit-tool-no-full-redraw.test.ts +++ b/packages/coding-agent/test/edit-tool-no-full-redraw.test.ts @@ -1,7 +1,7 @@ import { mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Container, type Terminal, Text, type TUI, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { Container, type Terminal, Text, type TUI, TuiMainScreen } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, it } from "vitest"; import { createEditToolDefinition } from "../src/core/tools/edit.ts"; import { computeEditsDiff, type Edit } from "../src/core/tools/edit-diff.ts"; diff --git a/packages/coding-agent/test/edit-tool-streaming-terminal.test.ts b/packages/coding-agent/test/edit-tool-streaming-terminal.test.ts index 93349b2cd..9062f7872 100644 --- a/packages/coding-agent/test/edit-tool-streaming-terminal.test.ts +++ b/packages/coding-agent/test/edit-tool-streaming-terminal.test.ts @@ -1,7 +1,7 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Container, Editor, Spacer, Text, type TUI, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { Container, Editor, Spacer, Text, type TUI, TuiMainScreen } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, it } from "vitest"; import { VirtualTerminal } from "../../tui/test/virtual-terminal.ts"; import { createEditToolDefinition } from "../src/core/tools/edit.ts"; diff --git a/packages/coding-agent/test/evolution-footer-status.test.ts b/packages/coding-agent/test/evolution-footer-status.test.ts index 0706826f0..a7b4ea6db 100644 --- a/packages/coding-agent/test/evolution-footer-status.test.ts +++ b/packages/coding-agent/test/evolution-footer-status.test.ts @@ -1,4 +1,4 @@ -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AUTOMATIC_EVOLUTION_TOKEN_THRESHOLD, diff --git a/packages/coding-agent/test/evolution-menu.test.ts b/packages/coding-agent/test/evolution-menu.test.ts index 1a0f4ed76..4fb0a5dd3 100644 --- a/packages/coding-agent/test/evolution-menu.test.ts +++ b/packages/coding-agent/test/evolution-menu.test.ts @@ -1,5 +1,5 @@ -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; -import { setKeybindings } from "@earendil-works/diffex-tui"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { AUTOMATIC_EVOLUTION_TOKEN_THRESHOLD, diff --git a/packages/coding-agent/test/evolution-runtime.test.ts b/packages/coding-agent/test/evolution-runtime.test.ts index 7efdcb5a9..c1b3f9f72 100644 --- a/packages/coding-agent/test/evolution-runtime.test.ts +++ b/packages/coding-agent/test/evolution-runtime.test.ts @@ -1,8 +1,8 @@ import { existsSync, mkdirSync, readFileSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { basename, join } from "node:path"; -import { fauxAssistantMessage, fauxToolCall, type Message } from "@earendil-works/diffex-ai"; -import { computeHarnessSkillId, HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { fauxAssistantMessage, fauxToolCall, type Message } from "@diffexai/diffex-ai"; +import { computeHarnessSkillId, HarnessStateStore } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { type EvolutionControlService, diff --git a/packages/coding-agent/test/evolved-skill-catalog.test.ts b/packages/coding-agent/test/evolved-skill-catalog.test.ts index a765353fc..babe01959 100644 --- a/packages/coding-agent/test/evolved-skill-catalog.test.ts +++ b/packages/coding-agent/test/evolved-skill-catalog.test.ts @@ -1,7 +1,7 @@ import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; -import { HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { HarnessStateStore } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it } from "vitest"; import { resolveHarnessWorkspace } from "../src/core/harness-state-runtime.ts"; import { DefaultResourceLoader } from "../src/core/resource-loader.ts"; diff --git a/packages/coding-agent/test/export-html-whitespace.test.ts b/packages/coding-agent/test/export-html-whitespace.test.ts index fcf3e4323..78da022fc 100644 --- a/packages/coding-agent/test/export-html-whitespace.test.ts +++ b/packages/coding-agent/test/export-html-whitespace.test.ts @@ -1,4 +1,4 @@ -import type { Component } from "@earendil-works/diffex-tui"; +import type { Component } from "@diffexai/diffex-tui"; import { readFileSync } from "fs"; import { describe, expect, it } from "vitest"; import { ansiLinesToHtml } from "../src/core/export-html/ansi-to-html.ts"; diff --git a/packages/coding-agent/test/extensions-discovery.test.ts b/packages/coding-agent/test/extensions-discovery.test.ts index e8d9cc7ae..ce33172d4 100644 --- a/packages/coding-agent/test/extensions-discovery.test.ts +++ b/packages/coding-agent/test/extensions-discovery.test.ts @@ -55,7 +55,7 @@ describe("extensions discovery", () => { fs.writeFileSync( path.join(extensionsDir, "coding-agent-import.ts"), ` - import { getAgentDir } from "@earendil-works/diffex-coding-agent"; + import { getAgentDir } from "@diffexai/diffex"; void getAgentDir; export default function(pi) { pi.registerCommand("test", { handler: async () => {} }); @@ -73,7 +73,7 @@ describe("extensions discovery", () => { fs.writeFileSync( path.join(extensionsDir, "oauth-import.ts"), ` - import * as oauth from "@earendil-works/diffex-ai/oauth"; + import * as oauth from "@diffexai/diffex-ai/oauth"; void oauth; export default function(pi) { pi.registerCommand("test", { handler: async () => {} }); diff --git a/packages/coding-agent/test/first-time-setup.test.ts b/packages/coding-agent/test/first-time-setup.test.ts index 0b4badf84..03fe420fe 100644 --- a/packages/coding-agent/test/first-time-setup.test.ts +++ b/packages/coding-agent/test/first-time-setup.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs } from "@earendil-works/diffex-tui"; +import { getGlyphs } from "@diffexai/diffex-tui"; import { mkdtempSync, rmSync, writeFileSync } from "fs"; import { tmpdir } from "os"; import { join } from "path"; diff --git a/packages/coding-agent/test/footer-width.test.ts b/packages/coding-agent/test/footer-width.test.ts index 5c40213ad..ccc4af061 100644 --- a/packages/coding-agent/test/footer-width.test.ts +++ b/packages/coding-agent/test/footer-width.test.ts @@ -1,6 +1,6 @@ import { sep } from "node:path"; -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; -import { setKeybindings, visibleWidth } from "@earendil-works/diffex-tui"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; +import { setKeybindings, visibleWidth } from "@diffexai/diffex-tui"; import { afterAll, beforeEach, describe, expect, it, vi } from "vitest"; import { AUTOMATIC_EVOLUTION_TOKEN_THRESHOLD, diff --git a/packages/coding-agent/test/harness-state-runtime.test.ts b/packages/coding-agent/test/harness-state-runtime.test.ts index dbccfa933..622c32f8c 100644 --- a/packages/coding-agent/test/harness-state-runtime.test.ts +++ b/packages/coding-agent/test/harness-state-runtime.test.ts @@ -9,7 +9,7 @@ import { type HarnessWorkspaceIdentity, harnessVersionDirectoryName, harnessWorkspaceSelectionFileName, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it } from "vitest"; import { loadWorkspaceHarnessState, diff --git a/packages/coding-agent/test/harness-version-selector.test.ts b/packages/coding-agent/test/harness-version-selector.test.ts index 2c726fbbf..507964c17 100644 --- a/packages/coding-agent/test/harness-version-selector.test.ts +++ b/packages/coding-agent/test/harness-version-selector.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings, visibleWidth } from "@earendil-works/diffex-tui"; +import { setKeybindings, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import { diff --git a/packages/coding-agent/test/interactive-mode-evolution.test.ts b/packages/coding-agent/test/interactive-mode-evolution.test.ts index 7a145e936..a11d30e55 100644 --- a/packages/coding-agent/test/interactive-mode-evolution.test.ts +++ b/packages/coding-agent/test/interactive-mode-evolution.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings } from "@earendil-works/diffex-tui"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { AUTOMATIC_EVOLUTION_TOKEN_THRESHOLD, type EvolutionOverview } from "#evolution"; import { KeybindingsManager } from "../src/core/keybindings.ts"; diff --git a/packages/coding-agent/test/interactive-mode-harness-version.test.ts b/packages/coding-agent/test/interactive-mode-harness-version.test.ts index bb3437af8..bb2a0032b 100644 --- a/packages/coding-agent/test/interactive-mode-harness-version.test.ts +++ b/packages/coding-agent/test/interactive-mode-harness-version.test.ts @@ -1,5 +1,5 @@ -import type { HarnessSkill } from "@earendil-works/diffex-harness-state"; -import { setKeybindings } from "@earendil-works/diffex-tui"; +import type { HarnessSkill } from "@diffexai/diffex-harness-state"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import type { HarnessVersionSelectorComponent } from "../src/modes/interactive/components/harness-version-selector.ts"; diff --git a/packages/coding-agent/test/interactive-mode-plan-controls.test.ts b/packages/coding-agent/test/interactive-mode-plan-controls.test.ts index c2a720990..1d5869511 100644 --- a/packages/coding-agent/test/interactive-mode-plan-controls.test.ts +++ b/packages/coding-agent/test/interactive-mode-plan-controls.test.ts @@ -1,8 +1,8 @@ import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; -import { type Component, Container } from "@earendil-works/diffex-tui"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; +import { type Component, Container } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; import type { AgentSession } from "../src/core/agent-session.ts"; import type { AgentSessionRuntime } from "../src/core/agent-session-runtime.ts"; diff --git a/packages/coding-agent/test/interactive-mode-plan-handoff.test.ts b/packages/coding-agent/test/interactive-mode-plan-handoff.test.ts index 3b0271ff6..1bb7af6c9 100644 --- a/packages/coding-agent/test/interactive-mode-plan-handoff.test.ts +++ b/packages/coding-agent/test/interactive-mode-plan-handoff.test.ts @@ -1,6 +1,6 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; -import type { Component, EditorComponent } from "@earendil-works/diffex-tui"; -import { type Container, Text } from "@earendil-works/diffex-tui"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; +import type { Component, EditorComponent } from "@diffexai/diffex-tui"; +import { type Container, Text } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; import type { AgentSession, AgentSessionEvent } from "../src/core/agent-session.ts"; import type { AgentSessionRuntime } from "../src/core/agent-session-runtime.ts"; diff --git a/packages/coding-agent/test/interactive-mode-plan-status.test.ts b/packages/coding-agent/test/interactive-mode-plan-status.test.ts index 9396666e2..5d416f8b1 100644 --- a/packages/coding-agent/test/interactive-mode-plan-status.test.ts +++ b/packages/coding-agent/test/interactive-mode-plan-status.test.ts @@ -1,5 +1,5 @@ -import type { Component } from "@earendil-works/diffex-tui"; -import { Container, Text, visibleWidth } from "@earendil-works/diffex-tui"; +import type { Component } from "@diffexai/diffex-tui"; +import { Container, Text, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, it, vi } from "vitest"; import type { ReadonlyFooterDataProvider } from "../src/core/footer-data-provider.ts"; import type { AppKeybinding, KeybindingsConfig } from "../src/core/keybindings.ts"; diff --git a/packages/coding-agent/test/interactive-mode-skills.test.ts b/packages/coding-agent/test/interactive-mode-skills.test.ts index 1fee89f37..83a4845f3 100644 --- a/packages/coding-agent/test/interactive-mode-skills.test.ts +++ b/packages/coding-agent/test/interactive-mode-skills.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings } from "@earendil-works/diffex-tui"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import type { SkillReference } from "../src/core/skills.ts"; diff --git a/packages/coding-agent/test/interactive-mode-status.test.ts b/packages/coding-agent/test/interactive-mode-status.test.ts index e1acaea87..077a7f4e8 100644 --- a/packages/coding-agent/test/interactive-mode-status.test.ts +++ b/packages/coding-agent/test/interactive-mode-status.test.ts @@ -1,7 +1,7 @@ import { homedir } from "node:os"; import * as path from "node:path"; -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import { type AutocompleteProvider, CombinedAutocompleteProvider } from "@earendil-works/diffex-tui"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import { type AutocompleteProvider, CombinedAutocompleteProvider } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, test, vi } from "vitest"; import { type Component, Container, type Focusable, type TUI } from "../../tui/src/tui.ts"; import { TuiMainScreen } from "../../tui/src/tui-main-screen.ts"; diff --git a/packages/coding-agent/test/interactive-mode-subagent-coordination.test.ts b/packages/coding-agent/test/interactive-mode-subagent-coordination.test.ts index 6e790453c..7e2c038b4 100644 --- a/packages/coding-agent/test/interactive-mode-subagent-coordination.test.ts +++ b/packages/coding-agent/test/interactive-mode-subagent-coordination.test.ts @@ -1,4 +1,4 @@ -import { Container, Markdown, type TUI } from "@earendil-works/diffex-tui"; +import { Container, Markdown, type TUI } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, it, vi } from "vitest"; import { TuiMainScreen } from "../../tui/src/tui-main-screen.ts"; import { VirtualTerminal } from "../../tui/test/virtual-terminal.ts"; diff --git a/packages/coding-agent/test/interactive-transcript-layout.test.ts b/packages/coding-agent/test/interactive-transcript-layout.test.ts index 794bf3997..88947513d 100644 --- a/packages/coding-agent/test/interactive-transcript-layout.test.ts +++ b/packages/coding-agent/test/interactive-transcript-layout.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, ToolResultMessage, Usage } from "@earendil-works/diffex-ai"; -import { Container, getGlyphs, Spacer, Text, type TUI } from "@earendil-works/diffex-tui"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, ToolResultMessage, Usage } from "@diffexai/diffex-ai"; +import { Container, getGlyphs, Spacer, Text, type TUI } from "@diffexai/diffex-tui"; import { Type } from "typebox"; import { afterAll, beforeAll, describe, expect, test, vi } from "vitest"; import type { AgentSessionEvent } from "../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/interactive-tui.test.ts b/packages/coding-agent/test/interactive-tui.test.ts index 352cbf189..12ee16557 100644 --- a/packages/coding-agent/test/interactive-tui.test.ts +++ b/packages/coding-agent/test/interactive-tui.test.ts @@ -1,5 +1,5 @@ -import type { Component, Terminal, TUI } from "@earendil-works/diffex-tui"; -import { Container, isViewportTUI, Text } from "@earendil-works/diffex-tui"; +import type { Component, Terminal, TUI } from "@diffexai/diffex-tui"; +import { Container, isViewportTUI, Text } from "@diffexai/diffex-tui"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { VirtualTerminal } from "../../tui/test/virtual-terminal.ts"; import type { TuiMode } from "../src/core/settings-manager.ts"; diff --git a/packages/coding-agent/test/invocation-tracing.test.ts b/packages/coding-agent/test/invocation-tracing.test.ts index 0a76821c8..256244f17 100644 --- a/packages/coding-agent/test/invocation-tracing.test.ts +++ b/packages/coding-agent/test/invocation-tracing.test.ts @@ -3,14 +3,14 @@ import { mkdirSync, mkdtempSync, readdirSync, rmSync, statSync, writeFileSync } import { mkdir, open } from "node:fs/promises"; import { tmpdir } from "node:os"; import { dirname, join, resolve } from "node:path"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { readJsonlTraceFile, type TraceFooterRecord, type TraceRecord, type TraceSessionAttachRecord, type TraceSpanEventRecord, -} from "@earendil-works/diffex-harness-trace"; +} from "@diffexai/diffex-harness-trace"; import lockfile from "proper-lockfile"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { EvolutionScope } from "#evolution"; @@ -23,7 +23,7 @@ import { SessionManager } from "../src/core/session-manager.ts"; const cliPath = resolve(__dirname, "../src/cli.ts"); const tsconfigPath = resolve(__dirname, "../../../tsconfig.json"); const FAUX_EXTENSION_SOURCE = ` -import { fauxAssistantMessage, fauxToolCall, registerFauxProvider } from "@earendil-works/diffex-ai/compat"; +import { fauxAssistantMessage, fauxToolCall, registerFauxProvider } from "@diffexai/diffex-ai/compat"; const faux = registerFauxProvider(); faux.setResponses([ diff --git a/packages/coding-agent/test/llama-extension.test.ts b/packages/coding-agent/test/llama-extension.test.ts index 6d0ecc3b2..feef768d0 100644 --- a/packages/coding-agent/test/llama-extension.test.ts +++ b/packages/coding-agent/test/llama-extension.test.ts @@ -1,7 +1,7 @@ import { once } from "node:events"; import { createServer, type RequestListener, type Server, type ServerResponse } from "node:http"; import type { AddressInfo } from "node:net"; -import type { AuthContext, AuthPrompt, ModelsPublication, ModelsStoreEntry } from "@earendil-works/diffex-ai"; +import type { AuthContext, AuthPrompt, ModelsPublication, ModelsStoreEntry } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { createEventBus } from "../src/core/event-bus.ts"; import { createExtensionRuntime, loadExtensionFromFactory } from "../src/core/extensions/loader.ts"; diff --git a/packages/coding-agent/test/model-registry.test.ts b/packages/coding-agent/test/model-registry.test.ts index ea5d597d2..cec26e797 100644 --- a/packages/coding-agent/test/model-registry.test.ts +++ b/packages/coding-agent/test/model-registry.test.ts @@ -1,14 +1,8 @@ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { - AnthropicMessagesCompat, - Api, - Context, - Model, - OpenAICompletionsCompat, -} from "@earendil-works/diffex-ai/compat"; -import { getApiProvider, getModels, getSupportedThinkingLevels } from "@earendil-works/diffex-ai/compat"; +import type { AnthropicMessagesCompat, Api, Context, Model, OpenAICompletionsCompat } from "@diffexai/diffex-ai/compat"; +import { getApiProvider, getModels, getSupportedThinkingLevels } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, test, vi } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { clearApiKeyCache, type ModelRegistry, type ProviderConfigInput } from "../src/core/model-registry.ts"; diff --git a/packages/coding-agent/test/model-resolver.test.ts b/packages/coding-agent/test/model-resolver.test.ts index 50390212b..391c6a613 100644 --- a/packages/coding-agent/test/model-resolver.test.ts +++ b/packages/coding-agent/test/model-resolver.test.ts @@ -1,4 +1,4 @@ -import type { Model } from "@earendil-works/diffex-ai"; +import type { Model } from "@diffexai/diffex-ai"; import { describe, expect, test, vi } from "vitest"; import { defaultModelPerProvider, diff --git a/packages/coding-agent/test/model-runtime-auth-options.test.ts b/packages/coding-agent/test/model-runtime-auth-options.test.ts index a52509817..3a78cbe60 100644 --- a/packages/coding-agent/test/model-runtime-auth-options.test.ts +++ b/packages/coding-agent/test/model-runtime-auth-options.test.ts @@ -1,4 +1,4 @@ -import { type AuthType, type CredentialStore, InMemoryCredentialStore } from "@earendil-works/diffex-ai"; +import { type AuthType, type CredentialStore, InMemoryCredentialStore } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { ModelRuntime } from "../src/core/model-runtime.ts"; diff --git a/packages/coding-agent/test/model-runtime-cloudflare-compat.test.ts b/packages/coding-agent/test/model-runtime-cloudflare-compat.test.ts index dedf7feee..db52194e8 100644 --- a/packages/coding-agent/test/model-runtime-cloudflare-compat.test.ts +++ b/packages/coding-agent/test/model-runtime-cloudflare-compat.test.ts @@ -1,4 +1,4 @@ -import { complete, resetApiProviders } from "@earendil-works/diffex-ai/compat"; +import { complete, resetApiProviders } from "@diffexai/diffex-ai/compat"; import { describe, expect, it, vi } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { ModelRegistry } from "../src/core/model-registry.ts"; diff --git a/packages/coding-agent/test/model-runtime-credential-sync.test.ts b/packages/coding-agent/test/model-runtime-credential-sync.test.ts index e02c2a635..c79bd3d46 100644 --- a/packages/coding-agent/test/model-runtime-credential-sync.test.ts +++ b/packages/coding-agent/test/model-runtime-credential-sync.test.ts @@ -1,4 +1,4 @@ -import type { ApiKeyCredential, Credential, CredentialStore, Model, Provider } from "@earendil-works/diffex-ai"; +import type { ApiKeyCredential, Credential, CredentialStore, Model, Provider } from "@diffexai/diffex-ai"; import { describe, expect, it, vi } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { CredentialSynchronizationError, ModelRuntime } from "../src/core/model-runtime.ts"; diff --git a/packages/coding-agent/test/model-runtime-modify-models-compat.test.ts b/packages/coding-agent/test/model-runtime-modify-models-compat.test.ts index be83838fa..2ad3c0d77 100644 --- a/packages/coding-agent/test/model-runtime-modify-models-compat.test.ts +++ b/packages/coding-agent/test/model-runtime-modify-models-compat.test.ts @@ -8,7 +8,7 @@ import { InMemoryModelsStore, type Model, type Provider, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { ModelRegistry } from "../src/core/model-registry.ts"; diff --git a/packages/coding-agent/test/model-runtime-test-utils.ts b/packages/coding-agent/test/model-runtime-test-utils.ts index f22aef3f7..a4e9f42dc 100644 --- a/packages/coding-agent/test/model-runtime-test-utils.ts +++ b/packages/coding-agent/test/model-runtime-test-utils.ts @@ -1,4 +1,4 @@ -import type { CredentialStore } from "@earendil-works/diffex-ai"; +import type { CredentialStore } from "@diffexai/diffex-ai"; import { ModelRegistry } from "../src/core/model-registry.ts"; import { ModelRuntime } from "../src/core/model-runtime.ts"; import { InMemoryCodingAgentModelsStore } from "../src/core/models-store.ts"; diff --git a/packages/coding-agent/test/model-selector.test.ts b/packages/coding-agent/test/model-selector.test.ts index e928dc0f3..1621ef0dc 100644 --- a/packages/coding-agent/test/model-selector.test.ts +++ b/packages/coding-agent/test/model-selector.test.ts @@ -1,4 +1,4 @@ -import type { TUI } from "@earendil-works/diffex-tui"; +import type { TUI } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; import { ModelSelectorComponent } from "../src/modes/interactive/components/model-selector.ts"; import { initTheme } from "../src/modes/interactive/theme/theme.ts"; diff --git a/packages/coding-agent/test/model-thinking-selection.test.ts b/packages/coding-agent/test/model-thinking-selection.test.ts index baecb01e1..772b10dff 100644 --- a/packages/coding-agent/test/model-thinking-selection.test.ts +++ b/packages/coding-agent/test/model-thinking-selection.test.ts @@ -1,5 +1,5 @@ -import type { ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import { type Component, Container, setKeybindings, type TUI, visibleWidth } from "@earendil-works/diffex-tui"; +import type { ThinkingLevel } from "@diffexai/diffex-agent-core"; +import { type Component, Container, setKeybindings, type TUI, visibleWidth } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import { CustomEditor } from "../src/modes/interactive/components/custom-editor.ts"; diff --git a/packages/coding-agent/test/models-store.test.ts b/packages/coding-agent/test/models-store.test.ts index 8e68ca8b1..34d78eeb7 100644 --- a/packages/coding-agent/test/models-store.test.ts +++ b/packages/coding-agent/test/models-store.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { Model } from "@earendil-works/diffex-ai"; +import type { Model } from "@diffexai/diffex-ai"; import lockfile from "proper-lockfile"; import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from "vitest"; import { FileModelsStore } from "../src/core/models-store.ts"; diff --git a/packages/coding-agent/test/oauth-selector.test.ts b/packages/coding-agent/test/oauth-selector.test.ts index 27b5116ef..c72993390 100644 --- a/packages/coding-agent/test/oauth-selector.test.ts +++ b/packages/coding-agent/test/oauth-selector.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, setKeybindings } from "@earendil-works/diffex-tui"; +import { getGlyphs, setKeybindings } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import { OAuthSelectorComponent } from "../src/modes/interactive/components/oauth-selector.ts"; diff --git a/packages/coding-agent/test/package-command-paths.test.ts b/packages/coding-agent/test/package-command-paths.test.ts index 3cc7da09f..2c544807c 100644 --- a/packages/coding-agent/test/package-command-paths.test.ts +++ b/packages/coding-agent/test/package-command-paths.test.ts @@ -573,7 +573,7 @@ describe("package commands", () => { it("uses the update check version for forced self updates even when current", async () => { const globalPrefix = join(tempDir, "global-prefix"); const projectPrefix = join(tempDir, "project-prefix"); - const selfPackageDir = join(globalPrefix, "lib", "node_modules", "@earendil-works", "diffex-coding-agent"); + const selfPackageDir = join(globalPrefix, "lib", "node_modules", "@diffexai", "diffex"); const fakeNpmPath = join(tempDir, "fake-npm.cjs"); const recordPath = join(tempDir, "self-update.json"); mkdirSync(selfPackageDir, { recursive: true }); @@ -722,7 +722,7 @@ else { it("prints a pnpm metadata hint when self-update fails", async () => { const globalRoot = join(tempDir, "pnpm", "global", "v11"); - const selfPackageDir = join(globalRoot, "node_modules", "@earendil-works", "diffex-coding-agent"); + const selfPackageDir = join(globalRoot, "node_modules", "@diffexai", "diffex"); const fakeBinDir = join(tempDir, "bin"); const fakePnpmPath = join(fakeBinDir, process.platform === "win32" ? "pnpm.cmd" : "pnpm"); mkdirSync(selfPackageDir, { recursive: true }); diff --git a/packages/coding-agent/test/print-mode.test.ts b/packages/coding-agent/test/print-mode.test.ts index 9725442ce..3b1b412bd 100644 --- a/packages/coding-agent/test/print-mode.test.ts +++ b/packages/coding-agent/test/print-mode.test.ts @@ -1,4 +1,4 @@ -import type { AssistantMessage, ImageContent } from "@earendil-works/diffex-ai"; +import type { AssistantMessage, ImageContent } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { SessionShutdownEvent } from "../src/index.ts"; import { runPrintMode } from "../src/modes/print-mode.ts"; diff --git a/packages/coding-agent/test/radius.test.ts b/packages/coding-agent/test/radius.test.ts index ff14eb414..bd943db4b 100644 --- a/packages/coding-agent/test/radius.test.ts +++ b/packages/coding-agent/test/radius.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { InMemoryModelsStore } from "@earendil-works/diffex-ai"; +import { InMemoryModelsStore } from "@diffexai/diffex-ai"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { ModelRuntime } from "../src/core/model-runtime.ts"; diff --git a/packages/coding-agent/test/remote-catalog-provider.test.ts b/packages/coding-agent/test/remote-catalog-provider.test.ts index c4310b826..5ee8e91f3 100644 --- a/packages/coding-agent/test/remote-catalog-provider.test.ts +++ b/packages/coding-agent/test/remote-catalog-provider.test.ts @@ -6,7 +6,7 @@ import { type ModelsPublication, type Provider, type RefreshModelsContext, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { VERSION } from "../src/config.ts"; import { withRemoteCatalog } from "../src/core/remote-catalog-provider.ts"; diff --git a/packages/coding-agent/test/request-user-input-tool.test.ts b/packages/coding-agent/test/request-user-input-tool.test.ts index 86a8e10ae..fc483070f 100644 --- a/packages/coding-agent/test/request-user-input-tool.test.ts +++ b/packages/coding-agent/test/request-user-input-tool.test.ts @@ -1,5 +1,5 @@ -import type { Component, TUI } from "@earendil-works/diffex-tui"; -import { setKeybindings, visibleWidth } from "@earendil-works/diffex-tui"; +import type { Component, TUI } from "@diffexai/diffex-tui"; +import { setKeybindings, visibleWidth } from "@diffexai/diffex-tui"; import { beforeEach, describe, expect, it, vi } from "vitest"; import type { ExtensionContext } from "../src/core/extensions/types.ts"; import { KeybindingsManager } from "../src/core/keybindings.ts"; diff --git a/packages/coding-agent/test/resource-loader.test.ts b/packages/coding-agent/test/resource-loader.test.ts index c74d62c15..4223ca308 100644 --- a/packages/coding-agent/test/resource-loader.test.ts +++ b/packages/coding-agent/test/resource-loader.test.ts @@ -915,7 +915,7 @@ Content`, writeFileSync( join(ext1Dir, "index.ts"), ` -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function(pi: ExtensionAPI) { pi.registerTool({ @@ -930,7 +930,7 @@ export default function(pi: ExtensionAPI) { writeFileSync( join(ext2Dir, "index.ts"), ` -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function(pi: ExtensionAPI) { pi.registerTool({ @@ -957,7 +957,7 @@ export default function(pi: ExtensionAPI) { writeFileSync( join(globalExtDir, "global.ts"), ` -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function(pi: ExtensionAPI) { pi.registerTool({ @@ -976,7 +976,7 @@ export default function(pi: ExtensionAPI) { writeFileSync( explicitExtPath, ` -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; import { Type } from "typebox"; export default function(pi: ExtensionAPI) { pi.registerTool({ diff --git a/packages/coding-agent/test/rpc-prompt-response-semantics.test.ts b/packages/coding-agent/test/rpc-prompt-response-semantics.test.ts index bb6f27c8a..4506bf12e 100644 --- a/packages/coding-agent/test/rpc-prompt-response-semantics.test.ts +++ b/packages/coding-agent/test/rpc-prompt-response-semantics.test.ts @@ -1,14 +1,14 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; +import { Agent } from "@diffexai/diffex-agent-core"; import { type AssistantMessage, type AssistantMessageEvent, EventStream, getModel, type Model, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AgentSession } from "../src/core/agent-session.ts"; import type { AgentSessionRuntime } from "../src/core/agent-session-runtime.ts"; diff --git a/packages/coding-agent/test/rpc.test.ts b/packages/coding-agent/test/rpc.test.ts index cebac4c5a..9566714e7 100644 --- a/packages/coding-agent/test/rpc.test.ts +++ b/packages/coding-agent/test/rpc.test.ts @@ -2,7 +2,7 @@ import { existsSync, readdirSync, readFileSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; -import type { AgentEvent } from "@earendil-works/diffex-agent-core"; +import type { AgentEvent } from "@diffexai/diffex-agent-core"; import { afterEach, beforeEach, describe, expect, test } from "vitest"; import { RpcClient } from "../src/modes/rpc/rpc-client.ts"; diff --git a/packages/coding-agent/test/runtime-credentials.test.ts b/packages/coding-agent/test/runtime-credentials.test.ts index f029f501d..f523b34f2 100644 --- a/packages/coding-agent/test/runtime-credentials.test.ts +++ b/packages/coding-agent/test/runtime-credentials.test.ts @@ -1,4 +1,4 @@ -import type { CredentialStore } from "@earendil-works/diffex-ai"; +import type { CredentialStore } from "@diffexai/diffex-ai"; import { describe, expect, test, vi } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { RuntimeCredentials } from "../src/core/runtime-credentials.ts"; diff --git a/packages/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts b/packages/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts index 31f664b44..fff3ce24f 100644 --- a/packages/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts +++ b/packages/coding-agent/test/sdk-codex-cache-probe-tool-loop.ts @@ -20,7 +20,7 @@ import { type Model, type SimpleStreamOptions, Type, -} from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-ai/compat"; import { getOpenAICodexWebSocketDebugStats, streamSimple as streamSimpleOpenAICodexResponses, diff --git a/packages/coding-agent/test/sdk-openrouter-attribution.test.ts b/packages/coding-agent/test/sdk-openrouter-attribution.test.ts index 4b5c2fd12..ee23376a2 100644 --- a/packages/coding-agent/test/sdk-openrouter-attribution.test.ts +++ b/packages/coding-agent/test/sdk-openrouter-attribution.test.ts @@ -8,7 +8,7 @@ import { type Model, type ProviderHeaders, type SimpleStreamOptions, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { createAgentSession } from "../src/core/sdk.ts"; diff --git a/packages/coding-agent/test/sdk-session-manager.test.ts b/packages/coding-agent/test/sdk-session-manager.test.ts index ae4d983a4..7312df3fb 100644 --- a/packages/coding-agent/test/sdk-session-manager.test.ts +++ b/packages/coding-agent/test/sdk-session-manager.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, realpathSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { createAgentSession } from "../src/core/sdk.ts"; import { SessionManager } from "../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/sdk-stream-options.test.ts b/packages/coding-agent/test/sdk-stream-options.test.ts index 97731033d..04ccbda46 100644 --- a/packages/coding-agent/test/sdk-stream-options.test.ts +++ b/packages/coding-agent/test/sdk-stream-options.test.ts @@ -7,7 +7,7 @@ import { createAssistantMessageEventStream, type Model, type SimpleStreamOptions, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { createAgentSession } from "../src/core/sdk.ts"; diff --git a/packages/coding-agent/test/secondary-dialogs.test.ts b/packages/coding-agent/test/secondary-dialogs.test.ts index 9919aa871..de25114ed 100644 --- a/packages/coding-agent/test/secondary-dialogs.test.ts +++ b/packages/coding-agent/test/secondary-dialogs.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, setKeybindings, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { getGlyphs, setKeybindings, TuiMainScreen } from "@diffexai/diffex-tui"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { VirtualTerminal } from "../../tui/test/virtual-terminal.ts"; import { KeybindingsManager } from "../src/core/keybindings.ts"; diff --git a/packages/coding-agent/test/server/create-harness.test.ts b/packages/coding-agent/test/server/create-harness.test.ts index fb498de2a..10424116a 100644 --- a/packages/coding-agent/test/server/create-harness.test.ts +++ b/packages/coding-agent/test/server/create-harness.test.ts @@ -7,10 +7,10 @@ import { type Result, Session, type ShellExecOptions, -} from "@earendil-works/diffex-agent-core"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; -import { createModels } from "@earendil-works/diffex-ai"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +} from "@diffexai/diffex-agent-core"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; +import { createModels } from "@diffexai/diffex-ai"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { describe, expect, test, vi } from "vitest"; import { createSkill } from "../../src/core/skills.ts"; diff --git a/packages/coding-agent/test/session-selector-path-delete.test.ts b/packages/coding-agent/test/session-selector-path-delete.test.ts index 10f26f528..c81daba8c 100644 --- a/packages/coding-agent/test/session-selector-path-delete.test.ts +++ b/packages/coding-agent/test/session-selector-path-delete.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, mkdtempSync, renameSync, rmSync, symlinkSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { basename, join } from "node:path"; -import { setKeybindings } from "@earendil-works/diffex-tui"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import { type SessionInfo, SessionManager } from "../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/session-selector-rename.test.ts b/packages/coding-agent/test/session-selector-rename.test.ts index 8e996d4d8..2dc6b9abb 100644 --- a/packages/coding-agent/test/session-selector-rename.test.ts +++ b/packages/coding-agent/test/session-selector-rename.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings } from "@earendil-works/diffex-tui"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import type { SessionInfo } from "../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/settings-selector.test.ts b/packages/coding-agent/test/settings-selector.test.ts index 855b8ff07..0af42356e 100644 --- a/packages/coding-agent/test/settings-selector.test.ts +++ b/packages/coding-agent/test/settings-selector.test.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { CURSOR_MARKER, getCapabilities, getGlyphs, setKeybindings, Text } from "@earendil-works/diffex-tui"; +import { CURSOR_MARKER, getCapabilities, getGlyphs, setKeybindings, Text } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import { SettingsManager } from "../src/core/settings-manager.ts"; diff --git a/packages/coding-agent/test/skill-selector.test.ts b/packages/coding-agent/test/skill-selector.test.ts index c1bc1822e..c6a5146b0 100644 --- a/packages/coding-agent/test/skill-selector.test.ts +++ b/packages/coding-agent/test/skill-selector.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings, visibleWidth } from "@earendil-works/diffex-tui"; +import { setKeybindings, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import type { SkillReference } from "../src/core/skills.ts"; diff --git a/packages/coding-agent/test/status-indicator.test.ts b/packages/coding-agent/test/status-indicator.test.ts index a60878399..6387b7773 100644 --- a/packages/coding-agent/test/status-indicator.test.ts +++ b/packages/coding-agent/test/status-indicator.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, type TUI } from "@earendil-works/diffex-tui"; +import { getGlyphs, type TUI } from "@diffexai/diffex-tui"; import { afterEach, describe, expect, it, vi } from "vitest"; import { BorderedLoader } from "../src/modes/interactive/components/bordered-loader.ts"; import { diff --git a/packages/coding-agent/test/streaming-render-debug.ts b/packages/coding-agent/test/streaming-render-debug.ts index e2e1cbf9e..bc13fd1ad 100644 --- a/packages/coding-agent/test/streaming-render-debug.ts +++ b/packages/coding-agent/test/streaming-render-debug.ts @@ -4,8 +4,8 @@ * Run with: npx tsx test/streaming-render-debug.ts */ -import type { AssistantMessage } from "@earendil-works/diffex-ai"; -import { ProcessTerminal, type TUI, TuiMainScreen } from "@earendil-works/diffex-tui"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; +import { ProcessTerminal, type TUI, TuiMainScreen } from "@diffexai/diffex-tui"; import { readFileSync } from "fs"; import { dirname, join } from "path"; import { fileURLToPath } from "url"; diff --git a/packages/coding-agent/test/subagents-component.test.ts b/packages/coding-agent/test/subagents-component.test.ts index 5bf38122d..017d9d0f8 100644 --- a/packages/coding-agent/test/subagents-component.test.ts +++ b/packages/coding-agent/test/subagents-component.test.ts @@ -1,4 +1,4 @@ -import { visibleWidth } from "@earendil-works/diffex-tui"; +import { visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, it } from "vitest"; import type { SubagentSummary } from "../src/core/subagents/types.ts"; import { SubagentsComponent } from "../src/modes/interactive/components/subagents.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-bash-persistence.test.ts b/packages/coding-agent/test/suite/agent-session-bash-persistence.test.ts index 8e609317d..bf7d0d1c1 100644 --- a/packages/coding-agent/test/suite/agent-session-bash-persistence.test.ts +++ b/packages/coding-agent/test/suite/agent-session-bash-persistence.test.ts @@ -1,6 +1,6 @@ import { Buffer } from "node:buffer"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import type { BashOperations } from "../../src/core/tools/bash.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-collaboration-mode.test.ts b/packages/coding-agent/test/suite/agent-session-collaboration-mode.test.ts index 027d7a707..8f7471da4 100644 --- a/packages/coding-agent/test/suite/agent-session-collaboration-mode.test.ts +++ b/packages/coding-agent/test/suite/agent-session-collaboration-mode.test.ts @@ -1,8 +1,8 @@ import { existsSync, mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it, vi } from "vitest"; import { diff --git a/packages/coding-agent/test/suite/agent-session-compaction.test.ts b/packages/coding-agent/test/suite/agent-session-compaction.test.ts index b9e1714f3..a7c68a2d5 100644 --- a/packages/coding-agent/test/suite/agent-session-compaction.test.ts +++ b/packages/coding-agent/test/suite/agent-session-compaction.test.ts @@ -3,7 +3,7 @@ import { createAssistantMessageEventStream, fauxAssistantMessage, type Model, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { estimateTokens } from "../../src/core/compaction/index.ts"; import { createHarness, getUserTexts, type Harness } from "./harness.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-current-plan-restoration.test.ts b/packages/coding-agent/test/suite/agent-session-current-plan-restoration.test.ts index f266b23d3..668e398f0 100644 --- a/packages/coding-agent/test/suite/agent-session-current-plan-restoration.test.ts +++ b/packages/coding-agent/test/suite/agent-session-current-plan-restoration.test.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, type Message, type TextContent } from "@earendil-works/diffex-ai"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, type Message, type TextContent } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { appendCurrentPlanRecord, diff --git a/packages/coding-agent/test/suite/agent-session-finalized-plan.test.ts b/packages/coding-agent/test/suite/agent-session-finalized-plan.test.ts index 63fb44724..e8a5e05f1 100644 --- a/packages/coding-agent/test/suite/agent-session-finalized-plan.test.ts +++ b/packages/coding-agent/test/suite/agent-session-finalized-plan.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage, fauxText } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage, fauxText } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { setCollaborationMode } from "../../src/core/collaboration-mode.ts"; import { parseFinalizedPlanResponse } from "../../src/core/finalized-plan.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-harness-version.test.ts b/packages/coding-agent/test/suite/agent-session-harness-version.test.ts index 71252dee5..c54952962 100644 --- a/packages/coding-agent/test/suite/agent-session-harness-version.test.ts +++ b/packages/coding-agent/test/suite/agent-session-harness-version.test.ts @@ -2,8 +2,8 @@ import { createHash } from "node:crypto"; import { mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { InMemoryTelemetryContext } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import { InMemoryTelemetryContext } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { computeHarnessSkillPackageVersion, computeHarnessVersion, @@ -14,7 +14,7 @@ import { type HarnessVersionMetadata, type HarnessWorkspaceIdentity, harnessVersionDirectoryName, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { resolveHarnessWorkspace } from "../../src/core/harness-state-runtime.ts"; import { createHarness, getMessageText, type Harness } from "./harness.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-model-extension.test.ts b/packages/coding-agent/test/suite/agent-session-model-extension.test.ts index bbcaaae5d..c589a8d41 100644 --- a/packages/coding-agent/test/suite/agent-session-model-extension.test.ts +++ b/packages/coding-agent/test/suite/agent-session-model-extension.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool, ThinkingLevel } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall, type Model, type Usage } from "@earendil-works/diffex-ai"; +import type { AgentTool, ThinkingLevel } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall, type Model, type Usage } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import type { BuildSystemPromptOptions, ExtensionAPI } from "../../src/index.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-prompt.test.ts b/packages/coding-agent/test/suite/agent-session-prompt.test.ts index d3ac3473b..09d7db1fe 100644 --- a/packages/coding-agent/test/suite/agent-session-prompt.test.ts +++ b/packages/coding-agent/test/suite/agent-session-prompt.test.ts @@ -1,9 +1,9 @@ import { mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { type AgentTool, InMemoryTelemetryContext } from "@earendil-works/diffex-agent-core"; -import { type AssistantMessage, fauxAssistantMessage, fauxToolCall, type Model } from "@earendil-works/diffex-ai"; -import { HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { type AgentTool, InMemoryTelemetryContext } from "@diffexai/diffex-agent-core"; +import { type AssistantMessage, fauxAssistantMessage, fauxToolCall, type Model } from "@diffexai/diffex-ai"; +import { HarnessStateStore } from "@diffexai/diffex-harness-state"; import { Type } from "typebox"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { InputEvent } from "../../src/core/extensions/index.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-queue.test.ts b/packages/coding-agent/test/suite/agent-session-queue.test.ts index 181ce31b2..550e9756b 100644 --- a/packages/coding-agent/test/suite/agent-session-queue.test.ts +++ b/packages/coding-agent/test/suite/agent-session-queue.test.ts @@ -1,9 +1,9 @@ import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI, ResourceLoader } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI, ResourceLoader } from "@diffexai/diffex"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createSkill } from "../../src/core/skills.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-retry-events.test.ts b/packages/coding-agent/test/suite/agent-session-retry-events.test.ts index 350c4647d..e20013ce8 100644 --- a/packages/coding-agent/test/suite/agent-session-retry-events.test.ts +++ b/packages/coding-agent/test/suite/agent-session-retry-events.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxThinking, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxThinking, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "./harness.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-runtime.test.ts b/packages/coding-agent/test/suite/agent-session-runtime.test.ts index 6c25d3d83..e4697c42f 100644 --- a/packages/coding-agent/test/suite/agent-session-runtime.test.ts +++ b/packages/coding-agent/test/suite/agent-session-runtime.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, realpathSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join, parse } from "node:path"; -import { fauxAssistantMessage, fauxToolCall, registerFauxProvider } from "@earendil-works/diffex-ai/compat"; +import { fauxAssistantMessage, fauxToolCall, registerFauxProvider } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AgentSession } from "../../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-subagent-lifecycle.test.ts b/packages/coding-agent/test/suite/agent-session-subagent-lifecycle.test.ts index 5085abfa1..5a6bc45d6 100644 --- a/packages/coding-agent/test/suite/agent-session-subagent-lifecycle.test.ts +++ b/packages/coding-agent/test/suite/agent-session-subagent-lifecycle.test.ts @@ -1,6 +1,6 @@ -import type { AgentToolResult } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import { type FauxProviderRegistration, registerFauxProvider } from "@earendil-works/diffex-ai/compat"; +import type { AgentToolResult } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; +import { type FauxProviderRegistration, registerFauxProvider } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AgentSession } from "../../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-tool-result-images.test.ts b/packages/coding-agent/test/suite/agent-session-tool-result-images.test.ts index 858ca1744..4a07da9e9 100644 --- a/packages/coding-agent/test/suite/agent-session-tool-result-images.test.ts +++ b/packages/coding-agent/test/suite/agent-session-tool-result-images.test.ts @@ -1,7 +1,7 @@ import { crc32, deflateSync } from "node:zlib"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import type { ImageContent } from "@earendil-works/diffex-ai"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import type { ImageContent } from "@diffexai/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "./harness.ts"; diff --git a/packages/coding-agent/test/suite/agent-session-update-plan.test.ts b/packages/coding-agent/test/suite/agent-session-update-plan.test.ts index abb97e5ce..05d2567d8 100644 --- a/packages/coding-agent/test/suite/agent-session-update-plan.test.ts +++ b/packages/coding-agent/test/suite/agent-session-update-plan.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { CURRENT_PLAN_CUSTOM_ENTRY_TYPE, resolveCurrentPlanState } from "../../src/core/current-plan-state.ts"; import type { CustomEntry } from "../../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/suite/harness.ts b/packages/coding-agent/test/suite/harness.ts index 9412691a8..529263fea 100644 --- a/packages/coding-agent/test/suite/harness.ts +++ b/packages/coding-agent/test/suite/harness.ts @@ -6,16 +6,16 @@ import { createInMemoryModelRegistry, createModelRegistry, getModelRuntime } fro import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { AgentMessage, AgentTool, TelemetryContext } from "@earendil-works/diffex-agent-core"; -import { Agent } from "@earendil-works/diffex-agent-core"; +import type { AgentMessage, AgentTool, TelemetryContext } from "@diffexai/diffex-agent-core"; +import { Agent } from "@diffexai/diffex-agent-core"; import type { FauxModelDefinition, FauxProviderRegistration, FauxResponseStep, Model, -} from "@earendil-works/diffex-ai/compat"; -import { registerFauxProvider, streamSimple } from "@earendil-works/diffex-ai/compat"; -import type { HarnessStateStore, HarnessVersionBundle } from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-ai/compat"; +import { registerFauxProvider, streamSimple } from "@diffexai/diffex-ai/compat"; +import type { HarnessStateStore, HarnessVersionBundle } from "@diffexai/diffex-harness-state"; import { AgentSession, type AgentSessionEvent } from "../../src/core/agent-session.ts"; import type { AgentSessionLifecycleObserver } from "../../src/core/agent-session-lifecycle.ts"; import { AuthStorage } from "../../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/suite/lax-message-content.test.ts b/packages/coding-agent/test/suite/lax-message-content.test.ts index d5dcab3e2..28e9f382e 100644 --- a/packages/coding-agent/test/suite/lax-message-content.test.ts +++ b/packages/coding-agent/test/suite/lax-message-content.test.ts @@ -7,8 +7,8 @@ * (issues #6259, #6276). */ -import type { AgentMessage, AgentToolResult } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentMessage, AgentToolResult } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import { type SessionEntry, sessionEntryToContextMessages } from "../../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/suite/regressions/1717-2113-agent-session-event-settlement.test.ts b/packages/coding-agent/test/suite/regressions/1717-2113-agent-session-event-settlement.test.ts index 4b241c7da..13bee1ae4 100644 --- a/packages/coding-agent/test/suite/regressions/1717-2113-agent-session-event-settlement.test.ts +++ b/packages/coding-agent/test/suite/regressions/1717-2113-agent-session-event-settlement.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/177-compaction-busy-state.test.ts b/packages/coding-agent/test/suite/regressions/177-compaction-busy-state.test.ts index 7ea593773..7e11311b6 100644 --- a/packages/coding-agent/test/suite/regressions/177-compaction-busy-state.test.ts +++ b/packages/coding-agent/test/suite/regressions/177-compaction-busy-state.test.ts @@ -1,8 +1,8 @@ import { mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; -import { HarnessStateStore, type HarnessVersion } from "@earendil-works/diffex-harness-state"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; +import { HarnessStateStore, type HarnessVersion } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { isCollaborationModeBusy, setCollaborationMode } from "../../../src/core/collaboration-mode.ts"; import { createHarness, getUserTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/177-skill-toggle-collaboration.test.ts b/packages/coding-agent/test/suite/regressions/177-skill-toggle-collaboration.test.ts index 13724d1ee..8b4113bb3 100644 --- a/packages/coding-agent/test/suite/regressions/177-skill-toggle-collaboration.test.ts +++ b/packages/coding-agent/test/suite/regressions/177-skill-toggle-collaboration.test.ts @@ -1,6 +1,6 @@ import { writeFileSync } from "node:fs"; import { join } from "node:path"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { PLAN_MODE_SYSTEM_PROMPT, setCollaborationMode } from "../../../src/core/collaboration-mode.ts"; import { createSkill } from "../../../src/core/skills.ts"; diff --git a/packages/coding-agent/test/suite/regressions/2-lesson-report-isolation.test.ts b/packages/coding-agent/test/suite/regressions/2-lesson-report-isolation.test.ts index 4ee10d0c1..007e1d76b 100644 --- a/packages/coding-agent/test/suite/regressions/2-lesson-report-isolation.test.ts +++ b/packages/coding-agent/test/suite/regressions/2-lesson-report-isolation.test.ts @@ -1,8 +1,8 @@ import { readdir, readFile, writeFile } from "node:fs/promises"; import { join } from "node:path"; -import { type Context, fauxAssistantMessage, fauxToolCall, type SimpleStreamOptions } from "@earendil-works/diffex-ai"; -import { HarnessStateStore } from "@earendil-works/diffex-harness-state"; -import { NOOP_TELEMETRY_CONTEXT } from "@earendil-works/diffex-telemetry"; +import { type Context, fauxAssistantMessage, fauxToolCall, type SimpleStreamOptions } from "@diffexai/diffex-ai"; +import { HarnessStateStore } from "@diffexai/diffex-harness-state"; +import { NOOP_TELEMETRY_CONTEXT } from "@diffexai/diffex-telemetry"; import { afterEach, describe, expect, it } from "vitest"; import { EvolutionMemoryWriter } from "#evolution"; import { materializeJsonlInvocation } from "#harness-trace"; diff --git a/packages/coding-agent/test/suite/regressions/2-skill-report-isolation.test.ts b/packages/coding-agent/test/suite/regressions/2-skill-report-isolation.test.ts index 4f04b6cca..798fec0fa 100644 --- a/packages/coding-agent/test/suite/regressions/2-skill-report-isolation.test.ts +++ b/packages/coding-agent/test/suite/regressions/2-skill-report-isolation.test.ts @@ -1,8 +1,8 @@ import { readdir, readFile } from "node:fs/promises"; import { join } from "node:path"; -import { type Context, fauxAssistantMessage, fauxToolCall, type SimpleStreamOptions } from "@earendil-works/diffex-ai"; -import { HarnessStateStore } from "@earendil-works/diffex-harness-state"; -import { NOOP_TELEMETRY_CONTEXT } from "@earendil-works/diffex-telemetry"; +import { type Context, fauxAssistantMessage, fauxToolCall, type SimpleStreamOptions } from "@diffexai/diffex-ai"; +import { HarnessStateStore } from "@diffexai/diffex-harness-state"; +import { NOOP_TELEMETRY_CONTEXT } from "@diffexai/diffex-telemetry"; import { afterEach, describe, expect, it } from "vitest"; import { FileEvolutionPersistence } from "#evolution"; import { materializeJsonlInvocation } from "#harness-trace"; diff --git a/packages/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts b/packages/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts index 191728dbd..fb1272c8f 100644 --- a/packages/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts +++ b/packages/coding-agent/test/suite/regressions/2023-queued-slash-command-followup.test.ts @@ -1,6 +1,6 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import type { ExtensionAPI } from "@earendil-works/diffex-coding-agent"; +import type { ExtensionAPI } from "@diffexai/diffex"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, getAssistantTexts, getUserTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts b/packages/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts index 943ee9c8b..e00325913 100644 --- a/packages/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts +++ b/packages/coding-agent/test/suite/regressions/2753-reload-stale-resource-settings.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { registerFauxProvider } from "@earendil-works/diffex-ai/compat"; +import { registerFauxProvider } from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it } from "vitest"; import { type CreateAgentSessionRuntimeFactory, diff --git a/packages/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts b/packages/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts index 543d6ba68..5a043b705 100644 --- a/packages/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts +++ b/packages/coding-agent/test/suite/regressions/2835-tools-allowlist-filters-extension-tools.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { DefaultResourceLoader } from "../../../src/core/resource-loader.ts"; diff --git a/packages/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts b/packages/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts index c8022bb8e..b1e37da19 100644 --- a/packages/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts +++ b/packages/coding-agent/test/suite/regressions/2860-replaced-session-context.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { fauxAssistantMessage, registerFauxProvider } from "@earendil-works/diffex-ai/compat"; +import { fauxAssistantMessage, registerFauxProvider } from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it } from "vitest"; import type { AgentSession } from "../../../src/core/agent-session.ts"; import { diff --git a/packages/coding-agent/test/suite/regressions/3-lesson-report-scoring.test.ts b/packages/coding-agent/test/suite/regressions/3-lesson-report-scoring.test.ts index 366432a6b..7bdef852d 100644 --- a/packages/coding-agent/test/suite/regressions/3-lesson-report-scoring.test.ts +++ b/packages/coding-agent/test/suite/regressions/3-lesson-report-scoring.test.ts @@ -1,7 +1,7 @@ import { readFile } from "node:fs/promises"; import { join } from "node:path"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import { HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; +import { HarnessStateStore } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { computeEvolutionContentDigest, diff --git a/packages/coding-agent/test/suite/regressions/3-skill-report-scoring.test.ts b/packages/coding-agent/test/suite/regressions/3-skill-report-scoring.test.ts index 35ce4cbb8..7cc0b3822 100644 --- a/packages/coding-agent/test/suite/regressions/3-skill-report-scoring.test.ts +++ b/packages/coding-agent/test/suite/regressions/3-skill-report-scoring.test.ts @@ -1,7 +1,7 @@ import { readFile } from "node:fs/promises"; import { join } from "node:path"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import { computeHarnessSkillId, HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; +import { computeHarnessSkillId, HarnessStateStore } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { computeEvolutionContentDigest, FileEvolutionPersistence, type SkillScoreLedger } from "#evolution"; import { diff --git a/packages/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts b/packages/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts index 46f9f4f2d..b5f7d60ea 100644 --- a/packages/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts +++ b/packages/coding-agent/test/suite/regressions/3217-scoped-model-order.test.ts @@ -1,4 +1,4 @@ -import { SELECTED_LIST_PREFIX, setKeybindings, stripTerminalSequences, type TUI } from "@earendil-works/diffex-tui"; +import { SELECTED_LIST_PREFIX, setKeybindings, stripTerminalSequences, type TUI } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../../../src/core/keybindings.ts"; import { ModelSelectorComponent } from "../../../src/modes/interactive/components/model-selector.ts"; diff --git a/packages/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts b/packages/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts index 9ad34b449..1e18ffe8b 100644 --- a/packages/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts +++ b/packages/coding-agent/test/suite/regressions/3317-network-connection-lost-retry.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, getAssistantTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/3592-no-builtin-tools-keeps-extension-tools.test.ts b/packages/coding-agent/test/suite/regressions/3592-no-builtin-tools-keeps-extension-tools.test.ts index 32c6e1a2e..17ec28b8f 100644 --- a/packages/coding-agent/test/suite/regressions/3592-no-builtin-tools-keeps-extension-tools.test.ts +++ b/packages/coding-agent/test/suite/regressions/3592-no-builtin-tools-keeps-extension-tools.test.ts @@ -1,7 +1,7 @@ import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { getModel } from "@earendil-works/diffex-ai/compat"; +import { getModel } from "@diffexai/diffex-ai/compat"; import { Type } from "typebox"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { diff --git a/packages/coding-agent/test/suite/regressions/3982-message-end-cost-override.test.ts b/packages/coding-agent/test/suite/regressions/3982-message-end-cost-override.test.ts index b44b069d4..86fca1a3e 100644 --- a/packages/coding-agent/test/suite/regressions/3982-message-end-cost-override.test.ts +++ b/packages/coding-agent/test/suite/regressions/3982-message-end-cost-override.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/4-lesson-grooming.test.ts b/packages/coding-agent/test/suite/regressions/4-lesson-grooming.test.ts index fb1a1ad3c..d91504334 100644 --- a/packages/coding-agent/test/suite/regressions/4-lesson-grooming.test.ts +++ b/packages/coding-agent/test/suite/regressions/4-lesson-grooming.test.ts @@ -1,6 +1,6 @@ import { join } from "node:path"; -import { createAssistantMessageEventStream, fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import { HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { createAssistantMessageEventStream, fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; +import { HarnessStateStore } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { computeEvolutionContentDigest, EvolutionMemoryWriter, FileEvolutionPersistence } from "#evolution"; import { CuratorToolRegistry } from "../../../../evolution/src/curator-tools.ts"; diff --git a/packages/coding-agent/test/suite/regressions/4-skill-grooming.test.ts b/packages/coding-agent/test/suite/regressions/4-skill-grooming.test.ts index 983d97fc8..eb7ea06ec 100644 --- a/packages/coding-agent/test/suite/regressions/4-skill-grooming.test.ts +++ b/packages/coding-agent/test/suite/regressions/4-skill-grooming.test.ts @@ -1,6 +1,6 @@ import { join } from "node:path"; -import { createAssistantMessageEventStream, fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import { computeHarnessSkillId, HarnessStateStore } from "@earendil-works/diffex-harness-state"; +import { createAssistantMessageEventStream, fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; +import { computeHarnessSkillId, HarnessStateStore } from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it, vi } from "vitest"; import { DeterministicSkillLifecycleObserver, FileEvolutionPersistence, StructuredSkillCurator } from "#evolution"; import { createCodingAgentEvolutionRuntime, EvolutionRuntimeCoordinator } from "../../../src/core/evolution-runtime.ts"; diff --git a/packages/coding-agent/test/suite/regressions/4167-thinking-toggle-pending-tool-render.test.ts b/packages/coding-agent/test/suite/regressions/4167-thinking-toggle-pending-tool-render.test.ts index 81fd63a99..ba0de489f 100644 --- a/packages/coding-agent/test/suite/regressions/4167-thinking-toggle-pending-tool-render.test.ts +++ b/packages/coding-agent/test/suite/regressions/4167-thinking-toggle-pending-tool-render.test.ts @@ -1,6 +1,6 @@ -import type { AgentMessage } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, ToolResultMessage, Usage } from "@earendil-works/diffex-ai"; -import { Container, Text, type TUI } from "@earendil-works/diffex-tui"; +import type { AgentMessage } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, ToolResultMessage, Usage } from "@diffexai/diffex-ai"; +import { Container, Text, type TUI } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, test, vi } from "vitest"; import type { AgentSessionEvent } from "../../../src/core/agent-session.ts"; import type { SessionEntry } from "../../../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/suite/regressions/5217-compaction-reason.test.ts b/packages/coding-agent/test/suite/regressions/5217-compaction-reason.test.ts index 1132a3c0b..1cd0535e7 100644 --- a/packages/coding-agent/test/suite/regressions/5217-compaction-reason.test.ts +++ b/packages/coding-agent/test/suite/regressions/5217-compaction-reason.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import type { ExtensionFactory } from "../../../src/index.ts"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/5433-extension-oauth-prompt-input.test.ts b/packages/coding-agent/test/suite/regressions/5433-extension-oauth-prompt-input.test.ts index 5e61f51d0..1178d731b 100644 --- a/packages/coding-agent/test/suite/regressions/5433-extension-oauth-prompt-input.test.ts +++ b/packages/coding-agent/test/suite/regressions/5433-extension-oauth-prompt-input.test.ts @@ -1,4 +1,4 @@ -import { setKeybindings, type TUI } from "@earendil-works/diffex-tui"; +import { setKeybindings, type TUI } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, test, vi } from "vitest"; import { KeybindingsManager } from "../../../src/core/keybindings.ts"; import { LoginDialogComponent } from "../../../src/modes/interactive/components/login-dialog.ts"; diff --git a/packages/coding-agent/test/suite/regressions/5596-missing-theme-export.test.ts b/packages/coding-agent/test/suite/regressions/5596-missing-theme-export.test.ts index 4cd495769..95e98e2c0 100644 --- a/packages/coding-agent/test/suite/regressions/5596-missing-theme-export.test.ts +++ b/packages/coding-agent/test/suite/regressions/5596-missing-theme-export.test.ts @@ -1,8 +1,8 @@ import { existsSync, mkdtempSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, registerFauxProvider, streamSimple } from "@earendil-works/diffex-ai/compat"; +import { Agent } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, registerFauxProvider, streamSimple } from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it } from "vitest"; import { AgentSession } from "../../../src/core/agent-session.ts"; import { AuthStorage } from "../../../src/core/auth-storage.ts"; diff --git a/packages/coding-agent/test/suite/regressions/5943-session-start-notify.test.ts b/packages/coding-agent/test/suite/regressions/5943-session-start-notify.test.ts index 60da3fea5..9ddfb86b1 100644 --- a/packages/coding-agent/test/suite/regressions/5943-session-start-notify.test.ts +++ b/packages/coding-agent/test/suite/regressions/5943-session-start-notify.test.ts @@ -1,5 +1,5 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; -import { Container, Text } from "@earendil-works/diffex-tui"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; +import { Container, Text } from "@diffexai/diffex-tui"; import { describe, expect, it, vi } from "vitest"; import type { AgentSessionEvent } from "../../../src/core/agent-session.ts"; import type { ExtensionUIContext } from "../../../src/core/extensions/index.ts"; diff --git a/packages/coding-agent/test/suite/regressions/5998-blocked-tool-terminate.test.ts b/packages/coding-agent/test/suite/regressions/5998-blocked-tool-terminate.test.ts index 0418ac6b6..5de1cc010 100644 --- a/packages/coding-agent/test/suite/regressions/5998-blocked-tool-terminate.test.ts +++ b/packages/coding-agent/test/suite/regressions/5998-blocked-tool-terminate.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, getAssistantTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6019-explicit-provider-retry-message.test.ts b/packages/coding-agent/test/suite/regressions/6019-explicit-provider-retry-message.test.ts index e76ab14d1..751e1e65a 100644 --- a/packages/coding-agent/test/suite/regressions/6019-explicit-provider-retry-message.test.ts +++ b/packages/coding-agent/test/suite/regressions/6019-explicit-provider-retry-message.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { createHarness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6162-extension-active-tools-next-turn.test.ts b/packages/coding-agent/test/suite/regressions/6162-extension-active-tools-next-turn.test.ts index f6d884002..dd06445bd 100644 --- a/packages/coding-agent/test/suite/regressions/6162-extension-active-tools-next-turn.test.ts +++ b/packages/coding-agent/test/suite/regressions/6162-extension-active-tools-next-turn.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { describe, expect, it } from "vitest"; import type { ExtensionFactory } from "../../../src/index.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6324-branch-summary-ambient-auth.test.ts b/packages/coding-agent/test/suite/regressions/6324-branch-summary-ambient-auth.test.ts index c9b6c0af0..206592741 100644 --- a/packages/coding-agent/test/suite/regressions/6324-branch-summary-ambient-auth.test.ts +++ b/packages/coding-agent/test/suite/regressions/6324-branch-summary-ambient-auth.test.ts @@ -1,4 +1,4 @@ -import { createAssistantMessageEventStream } from "@earendil-works/diffex-ai"; +import { createAssistantMessageEventStream } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { assistantMsg, userMsg } from "../../utilities.ts"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6363-agent-settled-event.test.ts b/packages/coding-agent/test/suite/regressions/6363-agent-settled-event.test.ts index c6fd5bb15..e181499d7 100644 --- a/packages/coding-agent/test/suite/regressions/6363-agent-settled-event.test.ts +++ b/packages/coding-agent/test/suite/regressions/6363-agent-settled-event.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, getUserTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6647-compaction-retries-transient-stream-drop.test.ts b/packages/coding-agent/test/suite/regressions/6647-compaction-retries-transient-stream-drop.test.ts index 3dfa614b6..f0450aef2 100644 --- a/packages/coding-agent/test/suite/regressions/6647-compaction-retries-transient-stream-drop.test.ts +++ b/packages/coding-agent/test/suite/regressions/6647-compaction-retries-transient-stream-drop.test.ts @@ -1,9 +1,5 @@ -import type { StreamFn } from "@earendil-works/diffex-agent-core"; -import { - type AssistantMessage, - createAssistantMessageEventStream, - fauxAssistantMessage, -} from "@earendil-works/diffex-ai"; +import type { StreamFn } from "@diffexai/diffex-agent-core"; +import { type AssistantMessage, createAssistantMessageEventStream, fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6768-copilot-compaction-base-url.test.ts b/packages/coding-agent/test/suite/regressions/6768-copilot-compaction-base-url.test.ts index 194690e34..416f09b00 100644 --- a/packages/coding-agent/test/suite/regressions/6768-copilot-compaction-base-url.test.ts +++ b/packages/coding-agent/test/suite/regressions/6768-copilot-compaction-base-url.test.ts @@ -4,7 +4,7 @@ import { fauxAssistantMessage, type Model, type Provider, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6904-dns-transport-retry.test.ts b/packages/coding-agent/test/suite/regressions/6904-dns-transport-retry.test.ts index 6daee69dd..95ab37060 100644 --- a/packages/coding-agent/test/suite/regressions/6904-dns-transport-retry.test.ts +++ b/packages/coding-agent/test/suite/regressions/6904-dns-transport-retry.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { createHarness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6949-unavailable-scoped-model.test.ts b/packages/coding-agent/test/suite/regressions/6949-unavailable-scoped-model.test.ts index 53649b8b9..9f9e114db 100644 --- a/packages/coding-agent/test/suite/regressions/6949-unavailable-scoped-model.test.ts +++ b/packages/coding-agent/test/suite/regressions/6949-unavailable-scoped-model.test.ts @@ -1,5 +1,5 @@ -import type { Api, Model } from "@earendil-works/diffex-ai"; -import { setKeybindings } from "@earendil-works/diffex-tui"; +import type { Api, Model } from "@diffexai/diffex-ai"; +import { setKeybindings } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../../../src/core/keybindings.ts"; import { ScopedModelsSelectorComponent } from "../../../src/modes/interactive/components/scoped-models-selector.ts"; diff --git a/packages/coding-agent/test/suite/regressions/6999-models-json-hot-reload.test.ts b/packages/coding-agent/test/suite/regressions/6999-models-json-hot-reload.test.ts index bf181f964..8ccfa1515 100644 --- a/packages/coding-agent/test/suite/regressions/6999-models-json-hot-reload.test.ts +++ b/packages/coding-agent/test/suite/regressions/6999-models-json-hot-reload.test.ts @@ -1,7 +1,7 @@ import { mkdtempSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { setKeybindings, type TUI } from "@earendil-works/diffex-tui"; +import { setKeybindings, type TUI } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, beforeEach, describe, expect, it } from "vitest"; import { AuthStorage } from "../../../src/core/auth-storage.ts"; import { KeybindingsManager } from "../../../src/core/keybindings.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7027-credential-refresh-hang.test.ts b/packages/coding-agent/test/suite/regressions/7027-credential-refresh-hang.test.ts index e9292e8b5..f4741df95 100644 --- a/packages/coding-agent/test/suite/regressions/7027-credential-refresh-hang.test.ts +++ b/packages/coding-agent/test/suite/regressions/7027-credential-refresh-hang.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model, Provider } from "@earendil-works/diffex-ai"; +import type { Api, Model, Provider } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AuthStorage } from "../../../src/core/auth-storage.ts"; import { ModelRuntime } from "../../../src/core/model-runtime.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7150-rpc-prompt-during-compaction.test.ts b/packages/coding-agent/test/suite/regressions/7150-rpc-prompt-during-compaction.test.ts index 12e769b1a..f305f5bac 100644 --- a/packages/coding-agent/test/suite/regressions/7150-rpc-prompt-during-compaction.test.ts +++ b/packages/coding-agent/test/suite/regressions/7150-rpc-prompt-during-compaction.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, getMessageText, getUserTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7153-scoped-models-refresh.test.ts b/packages/coding-agent/test/suite/regressions/7153-scoped-models-refresh.test.ts index 9aa3656e7..53f2711c6 100644 --- a/packages/coding-agent/test/suite/regressions/7153-scoped-models-refresh.test.ts +++ b/packages/coding-agent/test/suite/regressions/7153-scoped-models-refresh.test.ts @@ -1,5 +1,5 @@ -import type { Api, Model, ModelsRefreshResult } from "@earendil-works/diffex-ai"; -import { setKeybindings, type TUI } from "@earendil-works/diffex-tui"; +import type { Api, Model, ModelsRefreshResult } from "@diffexai/diffex-ai"; +import { setKeybindings, type TUI } from "@diffexai/diffex-tui"; import { afterEach, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../../../src/core/keybindings.ts"; import type { ScopedModelsSelectorComponent } from "../../../src/modes/interactive/components/scoped-models-selector.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7209-model-selector-filter-resets-selection.test.ts b/packages/coding-agent/test/suite/regressions/7209-model-selector-filter-resets-selection.test.ts index 67c61d6ff..7ee7c92cf 100644 --- a/packages/coding-agent/test/suite/regressions/7209-model-selector-filter-resets-selection.test.ts +++ b/packages/coding-agent/test/suite/regressions/7209-model-selector-filter-resets-selection.test.ts @@ -1,4 +1,4 @@ -import { SELECTED_LIST_PREFIX, setKeybindings, stripTerminalSequences, type TUI } from "@earendil-works/diffex-tui"; +import { SELECTED_LIST_PREFIX, setKeybindings, stripTerminalSequences, type TUI } from "@diffexai/diffex-tui"; import { afterAll, beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../../../src/core/keybindings.ts"; import { ModelSelectorComponent } from "../../../src/modes/interactive/components/model-selector.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7253-manual-compact-during-response.test.ts b/packages/coding-agent/test/suite/regressions/7253-manual-compact-during-response.test.ts index fbc025288..fc8b25e7a 100644 --- a/packages/coding-agent/test/suite/regressions/7253-manual-compact-during-response.test.ts +++ b/packages/coding-agent/test/suite/regressions/7253-manual-compact-during-response.test.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7290-json-stream-linear.test.ts b/packages/coding-agent/test/suite/regressions/7290-json-stream-linear.test.ts index f80b7c184..43198f346 100644 --- a/packages/coding-agent/test/suite/regressions/7290-json-stream-linear.test.ts +++ b/packages/coding-agent/test/suite/regressions/7290-json-stream-linear.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import { toJsonEvent } from "../../../src/modes/json-event.ts"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7301-stalled-availability-refresh.test.ts b/packages/coding-agent/test/suite/regressions/7301-stalled-availability-refresh.test.ts index e5b7fc652..ed148c642 100644 --- a/packages/coding-agent/test/suite/regressions/7301-stalled-availability-refresh.test.ts +++ b/packages/coding-agent/test/suite/regressions/7301-stalled-availability-refresh.test.ts @@ -1,4 +1,4 @@ -import type { Models } from "@earendil-works/diffex-ai"; +import type { Models } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7443-model-command-cached-match.test.ts b/packages/coding-agent/test/suite/regressions/7443-model-command-cached-match.test.ts index 8f9227bb9..74a74faa6 100644 --- a/packages/coding-agent/test/suite/regressions/7443-model-command-cached-match.test.ts +++ b/packages/coding-agent/test/suite/regressions/7443-model-command-cached-match.test.ts @@ -1,4 +1,4 @@ -import type { Api, Model } from "@earendil-works/diffex-ai"; +import type { Api, Model } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { InteractiveMode } from "../../../src/modes/interactive/interactive-mode.ts"; import { createHarness, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/7731-tui-method-wrapping.test.ts b/packages/coding-agent/test/suite/regressions/7731-tui-method-wrapping.test.ts index a7fdb868d..c08bc6b4d 100644 --- a/packages/coding-agent/test/suite/regressions/7731-tui-method-wrapping.test.ts +++ b/packages/coding-agent/test/suite/regressions/7731-tui-method-wrapping.test.ts @@ -1,4 +1,4 @@ -import type { TUI } from "@earendil-works/diffex-tui"; +import type { TUI } from "@diffexai/diffex-tui"; import { describe, expect, it, vi } from "vitest"; import { createInteractiveTuiReference } from "../../../src/modes/interactive/interactive-mode.ts"; diff --git a/packages/coding-agent/test/suite/regressions/pre-prompt-compaction-no-continue.test.ts b/packages/coding-agent/test/suite/regressions/pre-prompt-compaction-no-continue.test.ts index 6a0cf4c3c..c52d9fa45 100644 --- a/packages/coding-agent/test/suite/regressions/pre-prompt-compaction-no-continue.test.ts +++ b/packages/coding-agent/test/suite/regressions/pre-prompt-compaction-no-continue.test.ts @@ -1,4 +1,4 @@ -import { type AssistantMessage, fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { type AssistantMessage, fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createHarness, getUserTexts, type Harness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/regressions/tree-during-streaming.test.ts b/packages/coding-agent/test/suite/regressions/tree-during-streaming.test.ts index d67355d49..b2e025a20 100644 --- a/packages/coding-agent/test/suite/regressions/tree-during-streaming.test.ts +++ b/packages/coding-agent/test/suite/regressions/tree-during-streaming.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { describe, expect, it } from "vitest"; import { userMsg } from "../../utilities.ts"; import { createHarness } from "../harness.ts"; diff --git a/packages/coding-agent/test/suite/runtime-telemetry.test.ts b/packages/coding-agent/test/suite/runtime-telemetry.test.ts index b5279fe35..270fb2baf 100644 --- a/packages/coding-agent/test/suite/runtime-telemetry.test.ts +++ b/packages/coding-agent/test/suite/runtime-telemetry.test.ts @@ -1,11 +1,11 @@ -import { InMemoryTelemetryContext } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { InMemoryTelemetryContext } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { HARNESS_VERSION_SCHEMA_VERSION, HarnessStateStore, type HarnessVersionBundle, INITIAL_HARNESS_VERSION_METADATA, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import { afterEach, describe, expect, it } from "vitest"; import { SubagentController } from "../../src/core/subagents/controller.ts"; import { captureSubagentSessionConfig } from "../../src/core/subagents/services.ts"; diff --git a/packages/coding-agent/test/suite/subagent-actions.test.ts b/packages/coding-agent/test/suite/subagent-actions.test.ts index 2288290b3..f2ed532d7 100644 --- a/packages/coding-agent/test/suite/subagent-actions.test.ts +++ b/packages/coding-agent/test/suite/subagent-actions.test.ts @@ -1,6 +1,6 @@ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, Context } from "@earendil-works/diffex-ai"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, Context } from "@diffexai/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { Check } from "typebox/value"; import { afterEach, describe, expect, it, vi } from "vitest"; diff --git a/packages/coding-agent/test/suite/subagent-agents.test.ts b/packages/coding-agent/test/suite/subagent-agents.test.ts index baa9f2096..e017af8b9 100644 --- a/packages/coding-agent/test/suite/subagent-agents.test.ts +++ b/packages/coding-agent/test/suite/subagent-agents.test.ts @@ -1,4 +1,4 @@ -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { Check } from "typebox/value"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { ExtensionContext } from "../../src/core/extensions/types.ts"; diff --git a/packages/coding-agent/test/suite/subagent-coordination.test.ts b/packages/coding-agent/test/suite/subagent-coordination.test.ts index 4b7c62997..2ca81b1bd 100644 --- a/packages/coding-agent/test/suite/subagent-coordination.test.ts +++ b/packages/coding-agent/test/suite/subagent-coordination.test.ts @@ -1,5 +1,5 @@ -import type { Context, SimpleStreamOptions } from "@earendil-works/diffex-ai"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { Context, SimpleStreamOptions } from "@diffexai/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it } from "vitest"; import type { AgentSession } from "../../src/core/agent-session.ts"; import type { ExtensionContext } from "../../src/core/extensions/types.ts"; diff --git a/packages/coding-agent/test/suite/subagent-harness.ts b/packages/coding-agent/test/suite/subagent-harness.ts index 1d94bd8b9..9592c078b 100644 --- a/packages/coding-agent/test/suite/subagent-harness.ts +++ b/packages/coding-agent/test/suite/subagent-harness.ts @@ -1,4 +1,4 @@ -import type { Context } from "@earendil-works/diffex-ai"; +import type { Context } from "@diffexai/diffex-ai"; import type { AgentSession } from "../../src/core/agent-session.ts"; import { SubagentController } from "../../src/core/subagents/controller.ts"; import { diff --git a/packages/coding-agent/test/suite/subagent-parent-messaging.test.ts b/packages/coding-agent/test/suite/subagent-parent-messaging.test.ts index ecf4c9b3e..24cc7970b 100644 --- a/packages/coding-agent/test/suite/subagent-parent-messaging.test.ts +++ b/packages/coding-agent/test/suite/subagent-parent-messaging.test.ts @@ -1,8 +1,8 @@ import { mkdirSync, writeFileSync } from "node:fs"; import { join } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { type Context, fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; -import { HarnessStateStore, type HarnessVersionBundle } from "@earendil-works/diffex-harness-state"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { type Context, fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; +import { HarnessStateStore, type HarnessVersionBundle } from "@diffexai/diffex-harness-state"; import { Type } from "typebox"; import { Check } from "typebox/value"; import { afterEach, describe, expect, it, vi } from "vitest"; diff --git a/packages/coding-agent/test/suite/subagent-persistence.test.ts b/packages/coding-agent/test/suite/subagent-persistence.test.ts index 336f3b84d..87dd81f22 100644 --- a/packages/coding-agent/test/suite/subagent-persistence.test.ts +++ b/packages/coding-agent/test/suite/subagent-persistence.test.ts @@ -11,9 +11,9 @@ import { } from "node:fs"; import { tmpdir } from "node:os"; import { dirname, join, resolve } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; -import type { FauxModelDefinition } from "@earendil-works/diffex-ai/compat"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; +import type { FauxModelDefinition } from "@diffexai/diffex-ai/compat"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AgentSession } from "../../src/core/agent-session.ts"; import { createAgentSessionFromServices, createAgentSessionServices } from "../../src/core/agent-session-services.ts"; diff --git a/packages/coding-agent/test/suite/subagent-registration.test.ts b/packages/coding-agent/test/suite/subagent-registration.test.ts index 9ab6ca8f4..d20fb0b1a 100644 --- a/packages/coding-agent/test/suite/subagent-registration.test.ts +++ b/packages/coding-agent/test/suite/subagent-registration.test.ts @@ -1,8 +1,8 @@ import { mkdirSync } from "node:fs"; import { join } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import type { Context, Model, SimpleStreamOptions } from "@earendil-works/diffex-ai"; -import { fauxAssistantMessage, fauxToolCall } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import type { Context, Model, SimpleStreamOptions } from "@diffexai/diffex-ai"; +import { fauxAssistantMessage, fauxToolCall } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { AgentSession } from "../../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/suite/subagent-services.test.ts b/packages/coding-agent/test/suite/subagent-services.test.ts index a9c5abc24..fb269a938 100644 --- a/packages/coding-agent/test/suite/subagent-services.test.ts +++ b/packages/coding-agent/test/suite/subagent-services.test.ts @@ -1,6 +1,6 @@ import { mkdirSync, readFileSync, writeFileSync } from "node:fs"; import { join, resolve } from "node:path"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it, vi } from "vitest"; import { AgentSession } from "../../src/core/agent-session.ts"; diff --git a/packages/coding-agent/test/suite/subagent-startup.test.ts b/packages/coding-agent/test/suite/subagent-startup.test.ts index cc29f4673..029c6ccd0 100644 --- a/packages/coding-agent/test/suite/subagent-startup.test.ts +++ b/packages/coding-agent/test/suite/subagent-startup.test.ts @@ -1,6 +1,6 @@ -import type { AgentEvent } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage, Context } from "@earendil-works/diffex-ai"; -import { fauxAssistantMessage } from "@earendil-works/diffex-ai"; +import type { AgentEvent } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage, Context } from "@diffexai/diffex-ai"; +import { fauxAssistantMessage } from "@diffexai/diffex-ai"; import { afterEach, describe, expect, it, vi } from "vitest"; import type { AgentSession } from "../../src/core/agent-session.ts"; import type { ExtensionContext } from "../../src/core/extensions/types.ts"; diff --git a/packages/coding-agent/test/syntax-highlight.test.ts b/packages/coding-agent/test/syntax-highlight.test.ts index 90d98ecf5..5733b5b0b 100644 --- a/packages/coding-agent/test/syntax-highlight.test.ts +++ b/packages/coding-agent/test/syntax-highlight.test.ts @@ -1,4 +1,4 @@ -import { resetCapabilitiesCache, setCapabilities } from "@earendil-works/diffex-tui"; +import { resetCapabilitiesCache, setCapabilities } from "@diffexai/diffex-tui"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { highlightCode, initTheme } from "../src/modes/interactive/theme/theme.ts"; import { highlight, renderHighlightedHtml, supportsLanguage } from "../src/utils/syntax-highlight.ts"; diff --git a/packages/coding-agent/test/test-harness.test.ts b/packages/coding-agent/test/test-harness.test.ts index d6261a770..364c065f4 100644 --- a/packages/coding-agent/test/test-harness.test.ts +++ b/packages/coding-agent/test/test-harness.test.ts @@ -3,8 +3,8 @@ * Validates that the faux provider and session factory work correctly. */ -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import type { AssistantMessage } from "@earendil-works/diffex-ai"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import type { AssistantMessage } from "@diffexai/diffex-ai"; import { Type } from "typebox"; import { afterEach, describe, expect, it } from "vitest"; import { createHarness, createHarnessWithExtensions, type Harness } from "./test-harness.ts"; diff --git a/packages/coding-agent/test/test-harness.ts b/packages/coding-agent/test/test-harness.ts index f285d0047..1310f6394 100644 --- a/packages/coding-agent/test/test-harness.ts +++ b/packages/coding-agent/test/test-harness.ts @@ -11,8 +11,8 @@ import { createInMemoryModelRegistry, getModelRuntime } from "./model-runtime-te import { existsSync, mkdirSync, rmSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { AgentTool } from "@earendil-works/diffex-agent-core"; -import { Agent } from "@earendil-works/diffex-agent-core"; +import type { AgentTool } from "@diffexai/diffex-agent-core"; +import { Agent } from "@diffexai/diffex-agent-core"; import type { AssistantMessage, AssistantMessageEvent, @@ -25,8 +25,8 @@ import type { ThinkingContent, ToolCall, Usage, -} from "@earendil-works/diffex-ai"; -import { createAssistantMessageEventStream } from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; +import { createAssistantMessageEventStream } from "@diffexai/diffex-ai"; import { AgentSession, type AgentSessionEvent } from "../src/core/agent-session.ts"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { SessionManager } from "../src/core/session-manager.ts"; diff --git a/packages/coding-agent/test/theme-detection.test.ts b/packages/coding-agent/test/theme-detection.test.ts index 7d80ec0f2..58b98c553 100644 --- a/packages/coding-agent/test/theme-detection.test.ts +++ b/packages/coding-agent/test/theme-detection.test.ts @@ -1,12 +1,7 @@ import { mkdtempSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { - type RgbColor, - resetCapabilitiesCache, - SELECTED_LIST_PREFIX, - setCapabilities, -} from "@earendil-works/diffex-tui"; +import { type RgbColor, resetCapabilitiesCache, SELECTED_LIST_PREFIX, setCapabilities } from "@diffexai/diffex-tui"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; import { detectTerminalBackgroundFromEnv, diff --git a/packages/coding-agent/test/theme-no-color.test.ts b/packages/coding-agent/test/theme-no-color.test.ts index bcb260c1e..10976816e 100644 --- a/packages/coding-agent/test/theme-no-color.test.ts +++ b/packages/coding-agent/test/theme-no-color.test.ts @@ -1,4 +1,4 @@ -import { type GlyphMode, getGlyphs } from "@earendil-works/diffex-tui"; +import { type GlyphMode, getGlyphs } from "@diffexai/diffex-tui"; import { afterEach, describe, expect, test } from "vitest"; import { InteractiveMode } from "../src/modes/interactive/interactive-mode.ts"; import { initTheme, theme } from "../src/modes/interactive/theme/theme.ts"; diff --git a/packages/coding-agent/test/tool-execution-component.test.ts b/packages/coding-agent/test/tool-execution-component.test.ts index 6840c6701..f9dd54a16 100644 --- a/packages/coding-agent/test/tool-execution-component.test.ts +++ b/packages/coding-agent/test/tool-execution-component.test.ts @@ -1,5 +1,5 @@ import { join, resolve } from "node:path"; -import { getGlyphs, Text, type TUI } from "@earendil-works/diffex-tui"; +import { getGlyphs, Text, type TUI } from "@diffexai/diffex-tui"; import { Type } from "typebox"; import { beforeAll, describe, expect, test } from "vitest"; import { getReadmePath } from "../src/config.ts"; diff --git a/packages/coding-agent/test/tool-group-component.test.ts b/packages/coding-agent/test/tool-group-component.test.ts index 9919c6cd7..0552b8aa6 100644 --- a/packages/coding-agent/test/tool-group-component.test.ts +++ b/packages/coding-agent/test/tool-group-component.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, Text, type TUI, visibleWidth } from "@earendil-works/diffex-tui"; +import { getGlyphs, Text, type TUI, visibleWidth } from "@diffexai/diffex-tui"; import { Type } from "typebox"; import { beforeAll, describe, expect, test, vi } from "vitest"; import type { ToolDefinition } from "../src/core/extensions/types.ts"; diff --git a/packages/coding-agent/test/tree-selector.test.ts b/packages/coding-agent/test/tree-selector.test.ts index 3907e8315..bf6ce85ee 100644 --- a/packages/coding-agent/test/tree-selector.test.ts +++ b/packages/coding-agent/test/tree-selector.test.ts @@ -1,5 +1,5 @@ import { stripVTControlCharacters } from "node:util"; -import { SELECTED_LIST_PREFIX, setKeybindings, visibleWidth } from "@earendil-works/diffex-tui"; +import { SELECTED_LIST_PREFIX, setKeybindings, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, test } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import type { diff --git a/packages/coding-agent/test/truncate-to-width.test.ts b/packages/coding-agent/test/truncate-to-width.test.ts index 1e4e4fd74..53dc021a7 100644 --- a/packages/coding-agent/test/truncate-to-width.test.ts +++ b/packages/coding-agent/test/truncate-to-width.test.ts @@ -1,4 +1,4 @@ -import { truncateToWidth, visibleWidth } from "@earendil-works/diffex-tui"; +import { truncateToWidth, visibleWidth } from "@diffexai/diffex-tui"; import { describe, expect, it } from "vitest"; /** diff --git a/packages/coding-agent/test/trust-selector.test.ts b/packages/coding-agent/test/trust-selector.test.ts index 5cbc2fc98..44e835b00 100644 --- a/packages/coding-agent/test/trust-selector.test.ts +++ b/packages/coding-agent/test/trust-selector.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, setKeybindings, visibleWidth } from "@earendil-works/diffex-tui"; +import { getGlyphs, setKeybindings, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; import { KeybindingsManager } from "../src/core/keybindings.ts"; import { TrustSelectorComponent } from "../src/modes/interactive/components/trust-selector.ts"; diff --git a/packages/coding-agent/test/update-plan-tool.test.ts b/packages/coding-agent/test/update-plan-tool.test.ts index b70e12f84..918f66bb4 100644 --- a/packages/coding-agent/test/update-plan-tool.test.ts +++ b/packages/coding-agent/test/update-plan-tool.test.ts @@ -1,6 +1,6 @@ -import type { AgentToolResult } from "@earendil-works/diffex-agent-core"; -import { getModel, streamSimple } from "@earendil-works/diffex-ai/compat"; -import type { TUI } from "@earendil-works/diffex-tui"; +import type { AgentToolResult } from "@diffexai/diffex-agent-core"; +import { getModel, streamSimple } from "@diffexai/diffex-ai/compat"; +import type { TUI } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, test } from "vitest"; import type { ToolDefinition } from "../src/core/extensions/types.ts"; import { diff --git a/packages/coding-agent/test/user-message-selector.test.ts b/packages/coding-agent/test/user-message-selector.test.ts index d353445bd..6b5518cd8 100644 --- a/packages/coding-agent/test/user-message-selector.test.ts +++ b/packages/coding-agent/test/user-message-selector.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, visibleWidth } from "@earendil-works/diffex-tui"; +import { getGlyphs, visibleWidth } from "@diffexai/diffex-tui"; import { beforeAll, describe, expect, it } from "vitest"; import { UserMessageSelectorComponent } from "../src/modes/interactive/components/user-message-selector.ts"; import { initTheme } from "../src/modes/interactive/theme/theme.ts"; diff --git a/packages/coding-agent/test/user-message.test.ts b/packages/coding-agent/test/user-message.test.ts index 132e23302..9e0ee2d50 100644 --- a/packages/coding-agent/test/user-message.test.ts +++ b/packages/coding-agent/test/user-message.test.ts @@ -1,4 +1,4 @@ -import { getGlyphs, visibleWidth } from "@earendil-works/diffex-tui"; +import { getGlyphs, visibleWidth } from "@diffexai/diffex-tui"; import { describe, expect, test } from "vitest"; import { UserMessageComponent } from "../src/modes/interactive/components/user-message.ts"; import { initTheme, theme } from "../src/modes/interactive/theme/theme.ts"; diff --git a/packages/coding-agent/test/utilities.ts b/packages/coding-agent/test/utilities.ts index 1213d28a1..d157f429b 100644 --- a/packages/coding-agent/test/utilities.ts +++ b/packages/coding-agent/test/utilities.ts @@ -6,10 +6,10 @@ import { createModelRegistry, getModelRuntime } from "./model-runtime-test-utils import { chmodSync, existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs"; import { homedir, tmpdir } from "node:os"; import { dirname, join } from "node:path"; -import { Agent } from "@earendil-works/diffex-agent-core"; -import type { OAuthCredentials } from "@earendil-works/diffex-ai"; -import { getModel, streamSimple } from "@earendil-works/diffex-ai/compat"; -import { builtinProviders } from "@earendil-works/diffex-ai/providers/all"; +import { Agent } from "@diffexai/diffex-agent-core"; +import type { OAuthCredentials } from "@diffexai/diffex-ai"; +import { getModel, streamSimple } from "@diffexai/diffex-ai/compat"; +import { builtinProviders } from "@diffexai/diffex-ai/providers/all"; import { AgentSession } from "../src/core/agent-session.ts"; import { AuthStorage } from "../src/core/auth-storage.ts"; import { createEventBus } from "../src/core/event-bus.ts"; diff --git a/packages/coding-agent/tsconfig.build.json b/packages/coding-agent/tsconfig.build.json index eb517a81f..43b2d0bf5 100644 --- a/packages/coding-agent/tsconfig.build.json +++ b/packages/coding-agent/tsconfig.build.json @@ -5,14 +5,14 @@ "paths": { "#evolution": ["../evolution/dist/index.d.ts"], "#harness-trace": ["../harness-trace/dist/index.d.ts"], - "@earendil-works/diffex-agent-core": ["../agent/dist/index.d.ts"], - "@earendil-works/diffex-agent-core/*": ["../agent/dist/*.d.ts"], - "@earendil-works/diffex-ai": ["../ai/dist/index.d.ts"], - "@earendil-works/diffex-ai/*": ["../ai/dist/*.d.ts", "../ai/dist/providers/*.d.ts"], - "@earendil-works/diffex-client": ["../client/dist/index.d.ts"], - "@earendil-works/diffex-protocol": ["../protocol/dist/index.d.ts"], - "@earendil-works/diffex-tui": ["../tui/dist/index.d.ts"], - "@earendil-works/diffex-tui/*": ["../tui/dist/*.d.ts", "../tui/dist/components/*.d.ts"] + "@diffexai/diffex-agent-core": ["../agent/dist/index.d.ts"], + "@diffexai/diffex-agent-core/*": ["../agent/dist/*.d.ts"], + "@diffexai/diffex-ai": ["../ai/dist/index.d.ts"], + "@diffexai/diffex-ai/*": ["../ai/dist/*.d.ts", "../ai/dist/providers/*.d.ts"], + "@diffexai/diffex-client": ["../client/dist/index.d.ts"], + "@diffexai/diffex-protocol": ["../protocol/dist/index.d.ts"], + "@diffexai/diffex-tui": ["../tui/dist/index.d.ts"], + "@diffexai/diffex-tui/*": ["../tui/dist/*.d.ts", "../tui/dist/components/*.d.ts"] }, "rootDir": "./src" }, diff --git a/packages/coding-agent/tsconfig.examples.json b/packages/coding-agent/tsconfig.examples.json index cb0e20418..7ff5ed66f 100644 --- a/packages/coding-agent/tsconfig.examples.json +++ b/packages/coding-agent/tsconfig.examples.json @@ -3,10 +3,10 @@ "compilerOptions": { "noEmit": true, "paths": { - "@earendil-works/diffex-coding-agent": ["./src/index.ts"], - "@earendil-works/diffex-coding-agent/hooks": ["./src/core/hooks/index.ts"], - "@earendil-works/diffex-tui": ["../tui/src/index.ts"], - "@earendil-works/diffex-ai": ["../ai/src/index.ts"], + "@diffexai/diffex": ["./src/index.ts"], + "@diffexai/diffex/hooks": ["./src/core/hooks/index.ts"], + "@diffexai/diffex-tui": ["../tui/src/index.ts"], + "@diffexai/diffex-ai": ["../ai/src/index.ts"], "typebox": ["../../node_modules/typebox"] }, "skipLibCheck": true diff --git a/packages/coding-agent/vitest.config.ts b/packages/coding-agent/vitest.config.ts index 3eafc0e8e..7a0ddd5f6 100644 --- a/packages/coding-agent/vitest.config.ts +++ b/packages/coding-agent/vitest.config.ts @@ -23,11 +23,11 @@ export default mergeConfig( resolve: { alias: [ { - find: /^@earendil-works\/diffex-client$/, + find: /^@diffexai\/diffex-client$/, replacement: fileURLToPath(new URL("../client/src/index.ts", import.meta.url)), }, { - find: /^@earendil-works\/diffex-protocol$/, + find: /^@diffexai\/diffex-protocol$/, replacement: fileURLToPath(new URL("../protocol/src/index.ts", import.meta.url)), }, { find: /^@mariozechner\/pi-ai$/, replacement: workspaceSourcePaths.aiIndex }, diff --git a/packages/evals/package.json b/packages/evals/package.json index 554f53e9d..9a228a462 100644 --- a/packages/evals/package.json +++ b/packages/evals/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-evals", + "name": "@diffexai/diffex-evals", "version": "0.2.0", "private": true, "type": "module", @@ -9,8 +9,8 @@ "test": "vitest run --config vitest.test.config.ts" }, "devDependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-coding-agent": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex": "^0.2.0", "@types/node": "24.12.4", "shx": "0.4.0", "typescript": "5.9.3", diff --git a/packages/evals/src/diffex-harness.ts b/packages/evals/src/diffex-harness.ts index 65ae18297..3a2b85bbe 100644 --- a/packages/evals/src/diffex-harness.ts +++ b/packages/evals/src/diffex-harness.ts @@ -3,7 +3,6 @@ import { mkdir, mkdtemp, readFile, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { performance } from "node:perf_hooks"; -import { contentText } from "@earendil-works/diffex-ai"; import { type AgentSession, type CreateAgentSessionOptions, @@ -12,7 +11,8 @@ import { ModelRuntime, SessionManager, SettingsManager, -} from "@earendil-works/diffex-coding-agent"; +} from "@diffexai/diffex"; +import { contentText } from "@diffexai/diffex-ai"; import { createHarness, type Harness, diff --git a/packages/evals/src/extensions.eval.ts b/packages/evals/src/extensions.eval.ts index bbd23bb21..9d6d6d26f 100644 --- a/packages/evals/src/extensions.eval.ts +++ b/packages/evals/src/extensions.eval.ts @@ -61,8 +61,8 @@ const ExtensionAuthoringJudge = createJudge match[1], ); - if (!imports.includes("@earendil-works/diffex-coding-agent")) { - failures.push("extension does not import the canonical @earendil-works/diffex-coding-agent package"); + if (!imports.includes("@diffexai/diffex")) { + failures.push("extension does not import the canonical @diffexai/diffex package"); } if (imports.some((specifier) => specifier.startsWith("@mariozechner/"))) { failures.push("extension imports a legacy @mariozechner package"); diff --git a/packages/evals/src/vitest-evals/artifacts.ts b/packages/evals/src/vitest-evals/artifacts.ts index 0fd746354..9eed1ef8b 100644 --- a/packages/evals/src/vitest-evals/artifacts.ts +++ b/packages/evals/src/vitest-evals/artifacts.ts @@ -30,13 +30,13 @@ export interface SourceAttachment extends TestAttachment { } interface DiffexSessionArtifact extends TestArtifactBase { - type: "@earendil-works/diffex-evals:session"; + type: "@diffexai/diffex-evals:session"; runId: string; attachments: [DiffexSessionAttachment] | []; } interface SourceArtifact extends TestArtifactBase { - type: "@earendil-works/diffex-evals:source"; + type: "@diffexai/diffex-evals:source"; runId: string; attachments: [SourceAttachment] | []; } @@ -59,7 +59,7 @@ export async function recordEvalSessionArtifact( throw new TypeError("Diffex eval session artifact metadata is invalid."); } await recordArtifact(task, { - type: "@earendil-works/diffex-evals:session", + type: "@diffexai/diffex-evals:session", runId, attachments: [ { @@ -78,7 +78,7 @@ export async function recordEvalSourceArtifact( attachment: SourceAttachment, ): Promise { await recordArtifact(task, { - type: "@earendil-works/diffex-evals:source", + type: "@diffexai/diffex-evals:source", runId, attachments: [attachment], }); @@ -92,13 +92,12 @@ export async function persistEvalArtifactReferences( const references: Array<{ name: string; path: string }> = []; for (const artifact of artifacts) { if ( - (artifact.type !== "@earendil-works/diffex-evals:session" && - artifact.type !== "@earendil-works/diffex-evals:source") || + (artifact.type !== "@diffexai/diffex-evals:session" && artifact.type !== "@diffexai/diffex-evals:source") || artifact.runId !== runId ) { continue; } - const category = artifact.type === "@earendil-works/diffex-evals:session" ? "sessions" : "sources"; + const category = artifact.type === "@diffexai/diffex-evals:session" ? "sessions" : "sources"; for (const attachment of artifact.attachments) { const name = basename(attachment.name); if (name !== attachment.name) throw new TypeError(`Invalid eval artifact name: ${attachment.name}`); diff --git a/packages/evals/test/vitest-evals/artifacts.test.ts b/packages/evals/test/vitest-evals/artifacts.test.ts index b0f16fb95..f3f372a39 100644 --- a/packages/evals/test/vitest-evals/artifacts.test.ts +++ b/packages/evals/test/vitest-evals/artifacts.test.ts @@ -22,7 +22,7 @@ it("records session and source artifacts against the explicit test task", async expect(task.artifacts).toContainEqual( expect.objectContaining({ - type: "@earendil-works/diffex-evals:session", + type: "@diffexai/diffex-evals:session", runId, attachments: [ expect.objectContaining({ @@ -36,7 +36,7 @@ it("records session and source artifacts against the explicit test task", async ); expect(task.artifacts).toContainEqual( expect.objectContaining({ - type: "@earendil-works/diffex-evals:source", + type: "@diffexai/diffex-evals:source", runId, attachments: [ expect.objectContaining({ @@ -56,7 +56,7 @@ it("persists and selects attachments belonging to the reported run", async () => const references = await persistEvalArtifactReferences( [ { - type: "@earendil-works/diffex-evals:session", + type: "@diffexai/diffex-evals:session", runId: "run-1", attachments: [ { @@ -68,12 +68,12 @@ it("persists and selects attachments belonging to the reported run", async () => ], }, { - type: "@earendil-works/diffex-evals:session", + type: "@diffexai/diffex-evals:session", runId: "run-2", attachments: [], }, { - type: "@earendil-works/diffex-evals:source", + type: "@diffexai/diffex-evals:source", runId: "run-1", attachments: [ { diff --git a/packages/evals/vitest.config.ts b/packages/evals/vitest.config.ts index b0f7b30df..c3856d101 100644 --- a/packages/evals/vitest.config.ts +++ b/packages/evals/vitest.config.ts @@ -14,7 +14,7 @@ export default mergeConfig( reporters: ["vitest-evals/reporter", "./src/vitest-evals/reporter.ts"], }, resolve: { - alias: [{ find: /^@earendil-works\/diffex-coding-agent$/, replacement: workspaceSourcePaths.codingAgentIndex }], + alias: [{ find: /^@diffexai\/diffex$/, replacement: workspaceSourcePaths.codingAgentIndex }], }, }), ); diff --git a/packages/evals/vitest.test.config.ts b/packages/evals/vitest.test.config.ts index 63d2756ea..0e0278eee 100644 --- a/packages/evals/vitest.test.config.ts +++ b/packages/evals/vitest.test.config.ts @@ -8,7 +8,7 @@ export default mergeConfig( include: ["test/**/*.test.ts"], }, resolve: { - alias: [{ find: /^@earendil-works\/diffex-coding-agent$/, replacement: workspaceSourcePaths.codingAgentIndex }], + alias: [{ find: /^@diffexai\/diffex$/, replacement: workspaceSourcePaths.codingAgentIndex }], }, }), ); diff --git a/packages/evolution/package.json b/packages/evolution/package.json index 80c724460..6a095151d 100644 --- a/packages/evolution/package.json +++ b/packages/evolution/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-evolution", + "name": "@diffexai/diffex-evolution", "version": "0.2.0", "description": "Private evolution pipeline contracts and orchestration for Diffex", "private": true, @@ -21,7 +21,7 @@ "test": "vitest --run", "prepublishOnly": "npm run clean && npm run build" }, - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", @@ -32,8 +32,8 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/diffex-harness-state": "0.2.0", - "@earendil-works/diffex-harness-trace": "0.2.0", + "@diffexai/diffex-harness-state": "0.2.0", + "@diffexai/diffex-harness-trace": "0.2.0", "proper-lockfile": "4.1.2" }, "devDependencies": { diff --git a/packages/evolution/src/contracts.ts b/packages/evolution/src/contracts.ts index 8b5504858..f518cb421 100644 --- a/packages/evolution/src/contracts.ts +++ b/packages/evolution/src/contracts.ts @@ -1,9 +1,9 @@ -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; import type { MaterializationIntegrity, MaterializedInvocation, MaterializedTerminationStatus, -} from "@earendil-works/diffex-harness-trace"; +} from "@diffexai/diffex-harness-trace"; export const EVOLUTION_SCHEMA_VERSION = 1 as const; export const EVOLUTION_MEMORY_ITEM_SCHEMA_VERSION = 1 as const; diff --git a/packages/evolution/src/control-service.ts b/packages/evolution/src/control-service.ts index 703af98d4..79b4f35ee 100644 --- a/packages/evolution/src/control-service.ts +++ b/packages/evolution/src/control-service.ts @@ -4,8 +4,8 @@ import { type HarnessVersion, type HarnessVersionBundle, type HarnessVersionList, -} from "@earendil-works/diffex-harness-state"; -import type { MaterializedEvidence } from "@earendil-works/diffex-harness-trace"; +} from "@diffexai/diffex-harness-state"; +import type { MaterializedEvidence } from "@diffexai/diffex-harness-trace"; import type { EvolutionFailureReasonCode, EvolutionInputSnapshot, diff --git a/packages/evolution/src/curator.ts b/packages/evolution/src/curator.ts index a10faac76..d32a73c6d 100644 --- a/packages/evolution/src/curator.ts +++ b/packages/evolution/src/curator.ts @@ -1,5 +1,5 @@ -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import type { ApplicableInstructionReference, CuratorToolCallLedgerEvent, diff --git a/packages/evolution/src/evidence-corpus.ts b/packages/evolution/src/evidence-corpus.ts index 834391110..3019cb5b2 100644 --- a/packages/evolution/src/evidence-corpus.ts +++ b/packages/evolution/src/evidence-corpus.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence } from "@diffexai/diffex-harness-trace"; import type { EvidenceCorpusDocument, EvidenceSemanticUnit, diff --git a/packages/evolution/src/evidence-eligibility.ts b/packages/evolution/src/evidence-eligibility.ts index d3057a283..10edc0683 100644 --- a/packages/evolution/src/evidence-eligibility.ts +++ b/packages/evolution/src/evidence-eligibility.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; export const NON_SUBSTANTIVE_RUNTIME_TRACE_REASON = "non-substantive-runtime-trace" as const; diff --git a/packages/evolution/src/evolution-memory-writer.ts b/packages/evolution/src/evolution-memory-writer.ts index 2d869798b..658c9972a 100644 --- a/packages/evolution/src/evolution-memory-writer.ts +++ b/packages/evolution/src/evolution-memory-writer.ts @@ -9,7 +9,7 @@ import { type HarnessVersion, type HarnessVersionBundle, type HarnessVersionMetadata, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import type { EvolutionMemoryAddDelta, EvolutionMemoryExactDiff, diff --git a/packages/evolution/src/filesystem-store.ts b/packages/evolution/src/filesystem-store.ts index 1e296fdeb..f5de67a1d 100644 --- a/packages/evolution/src/filesystem-store.ts +++ b/packages/evolution/src/filesystem-store.ts @@ -2,7 +2,7 @@ import { randomUUID } from "node:crypto"; import type { Dirent } from "node:fs"; import { lstat, mkdir, mkdtemp, readdir, readFile, rename, rm, unlink, writeFile } from "node:fs/promises"; import { basename, dirname, join, resolve } from "node:path"; -import { computeHarnessSkillId, type HarnessWorkspaceIdentity } from "@earendil-works/diffex-harness-state"; +import { computeHarnessSkillId, type HarnessWorkspaceIdentity } from "@diffexai/diffex-harness-state"; import lockfile from "proper-lockfile"; import type { EvolutionArtifactReference, diff --git a/packages/evolution/src/lesson-score-store.ts b/packages/evolution/src/lesson-score-store.ts index 76ad8a91a..f82506550 100644 --- a/packages/evolution/src/lesson-score-store.ts +++ b/packages/evolution/src/lesson-score-store.ts @@ -1,4 +1,4 @@ -import type { HarnessVersion } from "@earendil-works/diffex-harness-state"; +import type { HarnessVersion } from "@diffexai/diffex-harness-state"; import type { EvolutionMemoryItem, EvolutionScope, ImmutableHarnessSnapshot } from "./contracts.ts"; export const LESSON_SCORE_SCHEMA_VERSION = 2 as const; diff --git a/packages/evolution/src/ports.ts b/packages/evolution/src/ports.ts index bf53fa660..ccc02407f 100644 --- a/packages/evolution/src/ports.ts +++ b/packages/evolution/src/ports.ts @@ -1,4 +1,4 @@ -import type { MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import type { CounterReport, DeferredSkillCandidateFinding, diff --git a/packages/evolution/src/proposal-ranking.ts b/packages/evolution/src/proposal-ranking.ts index 920ce9d89..56b99c278 100644 --- a/packages/evolution/src/proposal-ranking.ts +++ b/packages/evolution/src/proposal-ranking.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import type { EvidenceRankingScoreComponents, EvolutionArtifactProducer, diff --git a/packages/evolution/src/reflector-tools.ts b/packages/evolution/src/reflector-tools.ts index 971b7e061..72b3cf835 100644 --- a/packages/evolution/src/reflector-tools.ts +++ b/packages/evolution/src/reflector-tools.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence } from "@diffexai/diffex-harness-trace"; import type { EvidenceCorpusDocument, EvidenceCorpusManifest, diff --git a/packages/evolution/src/skill-curator-tools.ts b/packages/evolution/src/skill-curator-tools.ts index 4fe480732..70861a0b5 100644 --- a/packages/evolution/src/skill-curator-tools.ts +++ b/packages/evolution/src/skill-curator-tools.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import type { EvolutionInputSnapshot, EvolutionSkillCatalogEntry, diff --git a/packages/evolution/src/skill-curator.ts b/packages/evolution/src/skill-curator.ts index 9f8b88a96..d40c2d3a2 100644 --- a/packages/evolution/src/skill-curator.ts +++ b/packages/evolution/src/skill-curator.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence } from "@diffexai/diffex-harness-trace"; import type { EvolutionArtifactProducer, EvolutionArtifactReference, diff --git a/packages/evolution/src/skill-draft-validator.ts b/packages/evolution/src/skill-draft-validator.ts index 7a080f6bd..309e60b3c 100644 --- a/packages/evolution/src/skill-draft-validator.ts +++ b/packages/evolution/src/skill-draft-validator.ts @@ -1,5 +1,5 @@ import { posix } from "node:path"; -import { validateHarnessSkillContent, validateHarnessSkillFilePath } from "@earendil-works/diffex-harness-state"; +import { validateHarnessSkillContent, validateHarnessSkillFilePath } from "@diffexai/diffex-harness-state"; import type { EvolutionArtifactProducer, EvolutionArtifactReference, diff --git a/packages/evolution/src/skill-evaluator.ts b/packages/evolution/src/skill-evaluator.ts index b849cc69c..01563eef0 100644 --- a/packages/evolution/src/skill-evaluator.ts +++ b/packages/evolution/src/skill-evaluator.ts @@ -1,4 +1,4 @@ -import { computeHarnessSkillPackageVersion, validateHarnessSkillContent } from "@earendil-works/diffex-harness-state"; +import { computeHarnessSkillPackageVersion, validateHarnessSkillContent } from "@diffexai/diffex-harness-state"; import type { EvolutionArtifactProducer, EvolutionArtifactReference, diff --git a/packages/evolution/src/skill-score-store.ts b/packages/evolution/src/skill-score-store.ts index 7583b68df..8efeed00e 100644 --- a/packages/evolution/src/skill-score-store.ts +++ b/packages/evolution/src/skill-score-store.ts @@ -1,8 +1,4 @@ -import type { - HarnessVersion, - HarnessVersionBundle, - HarnessWorkspaceIdentity, -} from "@earendil-works/diffex-harness-state"; +import type { HarnessVersion, HarnessVersionBundle, HarnessWorkspaceIdentity } from "@diffexai/diffex-harness-state"; import type { EvolutionScope } from "./contracts.ts"; export const SKILL_SCORE_SCHEMA_VERSION = 2 as const; diff --git a/packages/evolution/src/skill-writer.ts b/packages/evolution/src/skill-writer.ts index ec7c40ac8..3ce412592 100644 --- a/packages/evolution/src/skill-writer.ts +++ b/packages/evolution/src/skill-writer.ts @@ -12,7 +12,7 @@ import { type HarnessWorkspaceIdentity, validateHarnessSkillContent, validateHarnessSkillFilePath, -} from "@earendil-works/diffex-harness-state"; +} from "@diffexai/diffex-harness-state"; import type { EvolutionArtifactProducer, EvolutionArtifactReference, diff --git a/packages/evolution/src/token-estimator.ts b/packages/evolution/src/token-estimator.ts index 39655f6de..c01a7dce2 100644 --- a/packages/evolution/src/token-estimator.ts +++ b/packages/evolution/src/token-estimator.ts @@ -1,4 +1,4 @@ -import type { MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { serializeEvolutionValue } from "./provenance.ts"; export const EVOLUTION_TOKEN_ESTIMATOR_VERSION = "canonical-json-utf8-v1" as const; diff --git a/packages/evolution/test/control-plane.test.ts b/packages/evolution/test/control-plane.test.ts index aa0c1c4fb..2a19daf90 100644 --- a/packages/evolution/test/control-plane.test.ts +++ b/packages/evolution/test/control-plane.test.ts @@ -1,7 +1,7 @@ import { mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { afterEach, describe, expect, it } from "vitest"; import { AUTOMATIC_EVOLUTION_COOLDOWN_MS, diff --git a/packages/evolution/test/control-service.test.ts b/packages/evolution/test/control-service.test.ts index e617cf5ee..a1a3d87f3 100644 --- a/packages/evolution/test/control-service.test.ts +++ b/packages/evolution/test/control-service.test.ts @@ -6,8 +6,8 @@ import { type HarnessVersion, type HarnessVersionList, harnessVersionDirectoryName, -} from "@earendil-works/diffex-harness-state"; -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +} from "@diffexai/diffex-harness-state"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { afterEach, describe, expect, it, vi } from "vitest"; import { computeEvolutionContentDigest, diff --git a/packages/evolution/test/curator.test.ts b/packages/evolution/test/curator.test.ts index d8d676c22..12a4fc81c 100644 --- a/packages/evolution/test/curator.test.ts +++ b/packages/evolution/test/curator.test.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import type { TSchema } from "typebox"; import { Check } from "typebox/value"; import { describe, expect, it } from "vitest"; diff --git a/packages/evolution/test/evidence-eligibility.test.ts b/packages/evolution/test/evidence-eligibility.test.ts index 1e78203e2..87359fe7a 100644 --- a/packages/evolution/test/evidence-eligibility.test.ts +++ b/packages/evolution/test/evidence-eligibility.test.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { describe, expect, it } from "vitest"; import { classifyEvolutionEvidence, selectEvolutionEvidence } from "../src/evidence-eligibility.ts"; diff --git a/packages/evolution/test/proposal-ranking.test.ts b/packages/evolution/test/proposal-ranking.test.ts index 7ad72dc73..68887816d 100644 --- a/packages/evolution/test/proposal-ranking.test.ts +++ b/packages/evolution/test/proposal-ranking.test.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { describe, expect, it } from "vitest"; import { computeEvolutionContentDigest, diff --git a/packages/evolution/test/reflector.test.ts b/packages/evolution/test/reflector.test.ts index 348a2e5d3..98d98c91e 100644 --- a/packages/evolution/test/reflector.test.ts +++ b/packages/evolution/test/reflector.test.ts @@ -1,7 +1,7 @@ import { mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { afterEach, describe, expect, it } from "vitest"; import { buildEvidenceCorpusDocument } from "../src/evidence-corpus.ts"; import { diff --git a/packages/evolution/test/skill-candidate-registry.test.ts b/packages/evolution/test/skill-candidate-registry.test.ts index f7c26816f..5b33449b3 100644 --- a/packages/evolution/test/skill-candidate-registry.test.ts +++ b/packages/evolution/test/skill-candidate-registry.test.ts @@ -1,5 +1,5 @@ -import { computeHarnessSkillPackageVersion } from "@earendil-works/diffex-harness-state"; -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import { computeHarnessSkillPackageVersion } from "@diffexai/diffex-harness-state"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { describe, expect, it } from "vitest"; import { computeEvolutionContentDigest, diff --git a/packages/evolution/test/skill-curator.test.ts b/packages/evolution/test/skill-curator.test.ts index 8f12545e0..bc2830cd0 100644 --- a/packages/evolution/test/skill-curator.test.ts +++ b/packages/evolution/test/skill-curator.test.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import type { TSchema } from "typebox"; import { Check } from "typebox/value"; import { describe, expect, it } from "vitest"; diff --git a/packages/evolution/test/skill-draft-validator.test.ts b/packages/evolution/test/skill-draft-validator.test.ts index ea51b0051..cbc50379e 100644 --- a/packages/evolution/test/skill-draft-validator.test.ts +++ b/packages/evolution/test/skill-draft-validator.test.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { describe, expect, it } from "vitest"; import { computeEvolutionContentDigest, diff --git a/packages/evolution/test/skill-synthesizer.test.ts b/packages/evolution/test/skill-synthesizer.test.ts index f488bcc9b..adb118e58 100644 --- a/packages/evolution/test/skill-synthesizer.test.ts +++ b/packages/evolution/test/skill-synthesizer.test.ts @@ -1,4 +1,4 @@ -import type { MaterializedEvidence, MaterializedInvocation } from "@earendil-works/diffex-harness-trace"; +import type { MaterializedEvidence, MaterializedInvocation } from "@diffexai/diffex-harness-trace"; import { describe, expect, it } from "vitest"; import { computeEvolutionContentDigest, diff --git a/packages/evolution/vitest.config.ts b/packages/evolution/vitest.config.ts index 46038c0e4..375b2b84f 100644 --- a/packages/evolution/vitest.config.ts +++ b/packages/evolution/vitest.config.ts @@ -10,6 +10,6 @@ export default defineConfig({ reporters: process.env.GITHUB_ACTIONS ? ["dot", "github-actions"] : ["dot"], }, resolve: { - alias: [{ find: /^@earendil-works\/diffex-harness-state$/, replacement: harnessStateSource }], + alias: [{ find: /^@diffexai\/diffex-harness-state$/, replacement: harnessStateSource }], }, }); diff --git a/packages/harness-state/README.md b/packages/harness-state/README.md index f30d12e50..a4f1ef663 100644 --- a/packages/harness-state/README.md +++ b/packages/harness-state/README.md @@ -1,4 +1,4 @@ -# `@earendil-works/diffex-harness-state` +# `@diffexai/diffex-harness-state` Persistent, content-addressed harness revisions for Diffex. diff --git a/packages/harness-state/package.json b/packages/harness-state/package.json index a9086fc44..a8db31aea 100644 --- a/packages/harness-state/package.json +++ b/packages/harness-state/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-harness-state", + "name": "@diffexai/diffex-harness-state", "version": "0.2.0", "description": "Persistent harness state schema and bundle storage for Diffex", "type": "module", @@ -26,7 +26,7 @@ "harness", "versioning" ], - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", diff --git a/packages/harness-trace/package.json b/packages/harness-trace/package.json index a683f3a02..0b333e6c5 100644 --- a/packages/harness-trace/package.json +++ b/packages/harness-trace/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-harness-trace", + "name": "@diffexai/diffex-harness-trace", "version": "0.2.0", "description": "Private durable harness trace recording for Diffex", "private": true, @@ -21,7 +21,7 @@ "test": "vitest --run", "prepublishOnly": "npm run clean && npm run build" }, - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", @@ -32,7 +32,7 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/diffex-telemetry": "0.2.0" + "@diffexai/diffex-telemetry": "0.2.0" }, "devDependencies": { "@types/node": "24.12.4", diff --git a/packages/harness-trace/src/codec.ts b/packages/harness-trace/src/codec.ts index 82e45c60a..e4ef6cc04 100644 --- a/packages/harness-trace/src/codec.ts +++ b/packages/harness-trace/src/codec.ts @@ -1,4 +1,4 @@ -import type { AttributeValue, SpanAttributes, SpanStatus } from "@earendil-works/diffex-telemetry"; +import type { AttributeValue, SpanAttributes, SpanStatus } from "@diffexai/diffex-telemetry"; import { type AgentHarnessSessionSegmentCursor, type CodingAgentV3EntryCursor, diff --git a/packages/harness-trace/src/materialized-types.ts b/packages/harness-trace/src/materialized-types.ts index a9e6f327b..60667b330 100644 --- a/packages/harness-trace/src/materialized-types.ts +++ b/packages/harness-trace/src/materialized-types.ts @@ -1,4 +1,4 @@ -import type { SpanAttributes, SpanStatus } from "@earendil-works/diffex-telemetry"; +import type { SpanAttributes, SpanStatus } from "@diffexai/diffex-telemetry"; import type { TraceHealth, TraceProducer, diff --git a/packages/harness-trace/src/recorder.ts b/packages/harness-trace/src/recorder.ts index f5c828e65..49661eadf 100644 --- a/packages/harness-trace/src/recorder.ts +++ b/packages/harness-trace/src/recorder.ts @@ -7,7 +7,7 @@ import { type SpanOptions, type SpanStatus, type TelemetrySpan, -} from "@earendil-works/diffex-telemetry"; +} from "@diffexai/diffex-telemetry"; import { encodeTraceRecord } from "./codec.ts"; import { type AgentHarnessSessionSegmentCursor, diff --git a/packages/harness-trace/src/types.ts b/packages/harness-trace/src/types.ts index d070303ec..355ecbcde 100644 --- a/packages/harness-trace/src/types.ts +++ b/packages/harness-trace/src/types.ts @@ -1,4 +1,4 @@ -import type { SpanAttributes, SpanStatus, TelemetryContext } from "@earendil-works/diffex-telemetry"; +import type { SpanAttributes, SpanStatus, TelemetryContext } from "@diffexai/diffex-telemetry"; export const TRACE_SCHEMA_VERSION = 1 as const; diff --git a/packages/harness-trace/test/harness-trace.test.ts b/packages/harness-trace/test/harness-trace.test.ts index 57ab721de..dd4011bcb 100644 --- a/packages/harness-trace/test/harness-trace.test.ts +++ b/packages/harness-trace/test/harness-trace.test.ts @@ -2,11 +2,8 @@ import { type FileHandle, mkdir, mkdtemp, open, readFile, rm, writeFile } from " import { tmpdir } from "node:os"; import { dirname, join } from "node:path"; import { fileURLToPath } from "node:url"; -import type { RecordedTelemetrySpan, SpanAttributes } from "@earendil-works/diffex-telemetry"; -import { - createTelemetryAdapterConformance, - type TelemetryAdapterFixture, -} from "@earendil-works/diffex-telemetry/testing"; +import type { RecordedTelemetrySpan, SpanAttributes } from "@diffexai/diffex-telemetry"; +import { createTelemetryAdapterConformance, type TelemetryAdapterFixture } from "@diffexai/diffex-telemetry/testing"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createJsonlTraceContext, diff --git a/packages/protocol/README.md b/packages/protocol/README.md index ebb1e32ea..692de0ff9 100644 --- a/packages/protocol/README.md +++ b/packages/protocol/README.md @@ -1,4 +1,4 @@ -# @earendil-works/diffex-protocol +# @diffexai/diffex-protocol Runtime-neutral schemas, types, CBOR encoding, and byte-stream framing for the experimental Diffex protocol. @@ -21,7 +21,7 @@ import { createServerMessageDecoder, encodeClientMessage, type ClientHello, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; const hello: ClientHello = { type: "hello", diff --git a/packages/protocol/package.json b/packages/protocol/package.json index e11df4f0f..69ce1fe05 100644 --- a/packages/protocol/package.json +++ b/packages/protocol/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-protocol", + "name": "@diffexai/diffex-protocol", "version": "0.2.0", "description": "Transport-neutral CBOR protocol for remote Diffex sessions", "type": "module", @@ -28,7 +28,7 @@ "binary", "framing" ], - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", diff --git a/packages/server/README.md b/packages/server/README.md index 921a5e620..0aea1a8f9 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -1,4 +1,4 @@ -# @earendil-works/diffex-server +# @diffexai/diffex-server Experimental. This package is under active development and may change or be removed without notice. Its APIs and behavior are not yet stable. @@ -9,8 +9,8 @@ Server package for Diffex. The package exports the `DiffexServer` session server. ```ts -import type { DiffexServerService } from "@earendil-works/diffex-server"; -import { createUnixServer } from "@earendil-works/diffex-server/unix"; +import type { DiffexServerService } from "@diffexai/diffex-server"; +import { createUnixServer } from "@diffexai/diffex-server/unix"; const service: DiffexServerService = { async listSessions() { @@ -33,7 +33,7 @@ const server = createUnixServer(service, { await server.start(); ``` -`DiffexServer` composes transport listeners through the `DiffexServerListener` interface. Each listener must complete any transport-specific authentication and authorization before passing a connection to `DiffexServer`. For example, a WebSocket listener can validate credentials during the HTTP upgrade, while the Unix listener relies on socket filesystem permissions. The Unix submodule exports the `createUnixListener()` building block and `createUnixServer()` preset, keeping the common case concise without coupling the primary server to Unix sockets. The listener uses length-prefixed CBOR messages from `@earendil-works/diffex-protocol`. +`DiffexServer` composes transport listeners through the `DiffexServerListener` interface. Each listener must complete any transport-specific authentication and authorization before passing a connection to `DiffexServer`. For example, a WebSocket listener can validate credentials during the HTTP upgrade, while the Unix listener relies on socket filesystem permissions. The Unix submodule exports the `createUnixListener()` building block and `createUnixServer()` preset, keeping the common case concise without coupling the primary server to Unix sockets. The listener uses length-prefixed CBOR messages from `@diffexai/diffex-protocol`. This package does not provide a standalone CLI or coding-agent service. Applications supply the `DiffexServerService` implementation. @@ -41,16 +41,16 @@ This package does not provide a standalone CLI or coding-agent service. Applicat ## Transport testing -Custom transports can use `@earendil-works/diffex-server/testing` for deterministic protocol conformance tests. It exports `createTestServer()`, `TestServerService`, `ProtocolTestClient`, and the transport-neutral `WireChannel` contract. `connectUnixTestClient()` is provided for Unix transport tests. +Custom transports can use `@diffexai/diffex-server/testing` for deterministic protocol conformance tests. It exports `createTestServer()`, `TestServerService`, `ProtocolTestClient`, and the transport-neutral `WireChannel` contract. `connectUnixTestClient()` is provided for Unix transport tests. ## `diffex-ai` protocol bridge -`@earendil-works/diffex-ai` domain objects and `@earendil-works/diffex-protocol` wire DTOs remain independent. This package owns their boundary and exports `toProtocolModelMetadata()`, `toProtocolAssistantMessage()`, `toProtocolUserMessage()`, and `toProtocolToolResultMessage()`. +`@diffexai/diffex-ai` domain objects and `@diffexai/diffex-protocol` wire DTOs remain independent. This package owns their boundary and exports `toProtocolModelMetadata()`, `toProtocolAssistantMessage()`, `toProtocolUserMessage()`, and `toProtocolToolResultMessage()`. The adapters reject invalid tool inputs, identifiers, timestamps, and mismatched tool results; `toProtocolToolResultMessage()` requires the original `ToolCall` so it can verify the association and convert its arguments itself. Diagnostic details are explicitly sanitized. Closed `diffex-ai` unions are mapped exhaustively, and compile-time field manifests enumerate current `diffex-ai` properties so additions require an explicit review. The protocol mirrors `diffex-ai` vocabulary such as `toolCall` and `toolUse` where the semantics are identical. Protocol schemas enforce consistent lifecycle states, and tests encode adapter output through the runtime schemas so incompatible changes fail in the bridging package. ## WebSocket listener -Hosted runtimes can compose an authenticated WebSocket listener from the explicit `@earendil-works/diffex-server/websocket` subpath. +Hosted runtimes can compose an authenticated WebSocket listener from the explicit `@diffexai/diffex-server/websocket` subpath. The authorization callback runs before the protocol connection is accepted and must validate the cloud-issued, session-scoped credential. Text messages are rejected, compression is disabled, and inbound and outbound byte limits are enforced independently from protocol frame validation. diff --git a/packages/server/package.json b/packages/server/package.json index 921988448..871056f3a 100644 --- a/packages/server/package.json +++ b/packages/server/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-server", + "name": "@diffexai/diffex-server", "version": "0.2.0", "description": "Experimental server package for Diffex", "type": "module", @@ -40,7 +40,7 @@ "diffex", "server" ], - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", @@ -51,8 +51,8 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-protocol": "^0.2.0", + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-protocol": "^0.2.0", "ws": "8.21.0" }, "devDependencies": { diff --git a/packages/server/src/connection.ts b/packages/server/src/connection.ts index 0ccbf86e0..c51cabd92 100644 --- a/packages/server/src/connection.ts +++ b/packages/server/src/connection.ts @@ -1,4 +1,4 @@ -import type { ClientMessageDecoder } from "@earendil-works/diffex-protocol"; +import type { ClientMessageDecoder } from "@diffexai/diffex-protocol"; import type { MaybePromise } from "./types.ts"; diff --git a/packages/server/src/errors.ts b/packages/server/src/errors.ts index 71492790b..6cfd2f53a 100644 --- a/packages/server/src/errors.ts +++ b/packages/server/src/errors.ts @@ -1,4 +1,4 @@ -import type { JsonValue, ProtocolErrorCode } from "@earendil-works/diffex-protocol"; +import type { JsonValue, ProtocolErrorCode } from "@diffexai/diffex-protocol"; export type DiffexServerOperationErrorCode = Extract< ProtocolErrorCode, diff --git a/packages/server/src/protocol.ts b/packages/server/src/protocol.ts index 990d8e2c5..7a0a4a024 100644 --- a/packages/server/src/protocol.ts +++ b/packages/server/src/protocol.ts @@ -10,7 +10,7 @@ import { type ToolCall, type ToolResultMessage, type UserMessage, -} from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-ai"; import type { AssistantTranscriptItem, JsonValue, @@ -19,7 +19,7 @@ import type { ToolTranscriptItem, Usage, UserTranscriptItem, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; type Assert = T; type ExactKeys = keyof T extends Keys ? true : false; diff --git a/packages/server/src/server.ts b/packages/server/src/server.ts index 837dc92c1..7a7ce264f 100644 --- a/packages/server/src/server.ts +++ b/packages/server/src/server.ts @@ -14,7 +14,7 @@ import { type ServerHello, type ServerHelloError, type ServerMessage, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { type ByteConnection, type ByteConnectionHandler, diff --git a/packages/server/src/sessions.ts b/packages/server/src/sessions.ts index 9eb5ed5d5..1ba7abd15 100644 --- a/packages/server/src/sessions.ts +++ b/packages/server/src/sessions.ts @@ -1,5 +1,5 @@ import { randomUUID } from "node:crypto"; -import type { Command, EventEnvelope, SessionMetadata, SessionSnapshot } from "@earendil-works/diffex-protocol"; +import type { Command, EventEnvelope, SessionMetadata, SessionSnapshot } from "@diffexai/diffex-protocol"; import type { ByteConnection, ConnectionState } from "./connection.ts"; import { DiffexServerError } from "./errors.ts"; import type { diff --git a/packages/server/src/snapshots.ts b/packages/server/src/snapshots.ts index b299c3fe0..38e3ed704 100644 --- a/packages/server/src/snapshots.ts +++ b/packages/server/src/snapshots.ts @@ -4,7 +4,7 @@ import { PROTOCOL_VERSION, type ServerSnapshot, type SessionMetadata, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import type { ConnectionState } from "./connection.ts"; import type { DiffexServerService } from "./types.ts"; diff --git a/packages/server/src/testing/client.ts b/packages/server/src/testing/client.ts index 154973096..3fd6ae468 100644 --- a/packages/server/src/testing/client.ts +++ b/packages/server/src/testing/client.ts @@ -8,7 +8,7 @@ import { type ResponseEnvelope, type ServerMessage, ServerMessageDecoder, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { Deferred } from "./service.ts"; interface MessageWaiter { diff --git a/packages/server/src/testing/service.ts b/packages/server/src/testing/service.ts index 64af7eda3..23084be1e 100644 --- a/packages/server/src/testing/service.ts +++ b/packages/server/src/testing/service.ts @@ -6,7 +6,7 @@ import type { SessionSnapshot, ThinkingLevel, TranscriptProgress, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import { DiffexServerError } from "../errors.ts"; import type { CreateSessionOptions, diff --git a/packages/server/src/transports/unix/listener.ts b/packages/server/src/transports/unix/listener.ts index 313278e69..b97ee8ee2 100644 --- a/packages/server/src/transports/unix/listener.ts +++ b/packages/server/src/transports/unix/listener.ts @@ -3,7 +3,7 @@ import type { Stats } from "node:fs"; import { chmod, link, lstat, mkdir, rename, unlink } from "node:fs/promises"; import { createConnection, createServer, type Server, type Socket } from "node:net"; import { dirname, join } from "node:path"; -import { DEFAULT_MAX_FRAME_LENGTH } from "@earendil-works/diffex-protocol"; +import { DEFAULT_MAX_FRAME_LENGTH } from "@diffexai/diffex-protocol"; import type { ByteConnection, ByteConnectionAcceptor } from "../../connection.ts"; import type { DiffexServerListener } from "../../listener.ts"; import type { UnixListenerOptions } from "./types.ts"; diff --git a/packages/server/src/transports/websocket/listener.ts b/packages/server/src/transports/websocket/listener.ts index b5a52c611..7439e37f0 100644 --- a/packages/server/src/transports/websocket/listener.ts +++ b/packages/server/src/transports/websocket/listener.ts @@ -1,6 +1,6 @@ import { createServer, type IncomingMessage, type Server } from "node:http"; import type { Duplex } from "node:stream"; -import { DEFAULT_MAX_FRAME_LENGTH } from "@earendil-works/diffex-protocol"; +import { DEFAULT_MAX_FRAME_LENGTH } from "@diffexai/diffex-protocol"; import { type RawData, WebSocket, WebSocketServer } from "ws"; import type { ByteConnection, ByteConnectionAcceptor } from "../../connection.ts"; import type { DiffexServerListener } from "../../listener.ts"; diff --git a/packages/server/src/types.ts b/packages/server/src/types.ts index ddb6ce2b1..5e6fbbbbb 100644 --- a/packages/server/src/types.ts +++ b/packages/server/src/types.ts @@ -7,7 +7,7 @@ import type { SessionSnapshot, ThinkingLevel, TranscriptProgress, -} from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-protocol"; import type { DiffexServerError } from "./errors.ts"; import type { DiffexServerListener } from "./listener.ts"; diff --git a/packages/server/test/conformance.test.ts b/packages/server/test/conformance.test.ts index 783bd0fb5..7b2d595f5 100644 --- a/packages/server/test/conformance.test.ts +++ b/packages/server/test/conformance.test.ts @@ -1,7 +1,7 @@ import { lstat, mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { encodeClientMessage, encodeFrame, PROTOCOL_VERSION } from "@earendil-works/diffex-protocol"; +import { encodeClientMessage, encodeFrame, PROTOCOL_VERSION } from "@diffexai/diffex-protocol"; import { afterEach, describe, expect, test } from "vitest"; import { type DiffexServer, DiffexServerError, InternalServerError, NotImplementedError } from "../src/index.ts"; import { connectUnixTestClient, Deferred, type ProtocolTestClient, TestServerService } from "../src/testing/index.ts"; diff --git a/packages/server/test/protocol.test.ts b/packages/server/test/protocol.test.ts index dc6b3dbed..96e4bd3f5 100644 --- a/packages/server/test/protocol.test.ts +++ b/packages/server/test/protocol.test.ts @@ -1,5 +1,5 @@ -import type { Api, AssistantMessage, Model, ToolCall, ToolResultMessage, UserMessage } from "@earendil-works/diffex-ai"; -import { encodeServerMessage, PROTOCOL_VERSION } from "@earendil-works/diffex-protocol"; +import type { Api, AssistantMessage, Model, ToolCall, ToolResultMessage, UserMessage } from "@diffexai/diffex-ai"; +import { encodeServerMessage, PROTOCOL_VERSION } from "@diffexai/diffex-protocol"; import { describe, expect, test } from "vitest"; import { sanitizeProtocolDetails, diff --git a/packages/server/test/server.test.ts b/packages/server/test/server.test.ts index dadf416f8..a73dbe16c 100644 --- a/packages/server/test/server.test.ts +++ b/packages/server/test/server.test.ts @@ -1,7 +1,7 @@ import { lstat, mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import { ServerMessageDecoder } from "@earendil-works/diffex-protocol"; +import { ServerMessageDecoder } from "@diffexai/diffex-protocol"; import { afterEach, expect, test, vi } from "vitest"; import type { ByteConnection } from "../src/connection.ts"; import { DiffexServer } from "../src/index.ts"; diff --git a/packages/server/test/sessions.test.ts b/packages/server/test/sessions.test.ts index e66129701..d8c4234b1 100644 --- a/packages/server/test/sessions.test.ts +++ b/packages/server/test/sessions.test.ts @@ -1,7 +1,7 @@ import { mkdtemp, rm } from "node:fs/promises"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { ModelMetadata, SessionSnapshot, TranscriptProgress } from "@earendil-works/diffex-protocol"; +import type { ModelMetadata, SessionSnapshot, TranscriptProgress } from "@diffexai/diffex-protocol"; import { afterEach, describe, expect, test } from "vitest"; import type { CreateSessionOptions, DiffexServer, DiffexSessionRuntime } from "../src/index.ts"; import { diff --git a/packages/server/test/unix-connection.test.ts b/packages/server/test/unix-connection.test.ts index c06ad3756..6e65f3475 100644 --- a/packages/server/test/unix-connection.test.ts +++ b/packages/server/test/unix-connection.test.ts @@ -1,6 +1,6 @@ import { EventEmitter } from "node:events"; import type { Socket } from "node:net"; -import { encodeServerMessage, type ServerHelloError, ServerMessageDecoder } from "@earendil-works/diffex-protocol"; +import { encodeServerMessage, type ServerHelloError, ServerMessageDecoder } from "@diffexai/diffex-protocol"; import { expect, test, vi } from "vitest"; import { UnixByteConnection } from "../src/transports/unix/listener.ts"; diff --git a/packages/server/tsconfig.test.json b/packages/server/tsconfig.test.json index 64249ed6e..21a5f3551 100644 --- a/packages/server/tsconfig.test.json +++ b/packages/server/tsconfig.test.json @@ -6,7 +6,7 @@ "moduleResolution": "NodeNext", "types": ["node", "vitest"], "paths": { - "@earendil-works/diffex-protocol": ["../protocol/src/index.ts"] + "@diffexai/diffex-protocol": ["../protocol/src/index.ts"] } }, "include": ["src/**/*.ts", "test/**/*.ts"] diff --git a/packages/server/vitest.config.ts b/packages/server/vitest.config.ts index 8120c1135..7050f560c 100644 --- a/packages/server/vitest.config.ts +++ b/packages/server/vitest.config.ts @@ -9,8 +9,8 @@ export default defineConfig({ }, resolve: { alias: { - "@earendil-works/diffex-ai": fileURLToPath(new URL("../ai/src/index.ts", import.meta.url)), - "@earendil-works/diffex-protocol": fileURLToPath(new URL("../protocol/src/index.ts", import.meta.url)), + "@diffexai/diffex-ai": fileURLToPath(new URL("../ai/src/index.ts", import.meta.url)), + "@diffexai/diffex-protocol": fileURLToPath(new URL("../protocol/src/index.ts", import.meta.url)), }, }, }); diff --git a/packages/session-backends/sqlite-node/README.md b/packages/session-backends/sqlite-node/README.md index 58e0bb0a4..c33007889 100644 --- a/packages/session-backends/sqlite-node/README.md +++ b/packages/session-backends/sqlite-node/README.md @@ -1,6 +1,6 @@ -# @earendil-works/diffex-session-backend-sqlite-node +# @diffexai/diffex-session-backend-sqlite-node -Node sqlite session backend for `@earendil-works/diffex-agent-core` sessions. Provides the +Node sqlite session backend for `@diffexai/diffex-agent-core` sessions. Provides the `node:sqlite` adapter (`SqliteDatabase` implementation), SQLite session repository, migrations, materialized views, and optional FTS search. diff --git a/packages/session-backends/sqlite-node/package.json b/packages/session-backends/sqlite-node/package.json index 23f12f4b6..81cf306f2 100644 --- a/packages/session-backends/sqlite-node/package.json +++ b/packages/session-backends/sqlite-node/package.json @@ -1,7 +1,7 @@ { - "name": "@earendil-works/diffex-session-backend-sqlite-node", + "name": "@diffexai/diffex-session-backend-sqlite-node", "version": "0.2.0", - "description": "Node sqlite session backend for @earendil-works/diffex-agent-core sessions", + "description": "Node sqlite session backend for @diffexai/diffex-agent-core sessions", "type": "module", "main": "./dist/index.js", "types": "./dist/index.d.ts", @@ -23,7 +23,7 @@ "coverage": "vitest --run --coverage", "prepublishOnly": "npm run clean && npm run build" }, - "author": "Earendil Works", + "author": "DiffexAI", "license": "MIT", "repository": { "type": "git", @@ -34,8 +34,8 @@ "node": ">=22.19.0" }, "dependencies": { - "@earendil-works/diffex-ai": "^0.2.0", - "@earendil-works/diffex-agent-core": "^0.2.0" + "@diffexai/diffex-ai": "^0.2.0", + "@diffexai/diffex-agent-core": "^0.2.0" }, "devDependencies": { "@vitest/coverage-v8": "4.1.9", diff --git a/packages/session-backends/sqlite-node/src/sqlite/branch-cache.ts b/packages/session-backends/sqlite-node/src/sqlite/branch-cache.ts index e69c8277d..962a8eead 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/branch-cache.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/branch-cache.ts @@ -1,5 +1,5 @@ -import { SessionError } from "@earendil-works/diffex-agent-core"; -import { uuidv7 } from "@earendil-works/diffex-ai"; +import { SessionError } from "@diffexai/diffex-agent-core"; +import { uuidv7 } from "@diffexai/diffex-ai"; import { sql } from "./sql.ts"; import { copyBranchEntriesThroughSeq, diff --git a/packages/session-backends/sqlite-node/src/sqlite/repo.ts b/packages/session-backends/sqlite-node/src/sqlite/repo.ts index fe28cec11..08310b570 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/repo.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/repo.ts @@ -1,4 +1,4 @@ -import type { FileError, Result } from "@earendil-works/diffex-agent-core"; +import type { FileError, Result } from "@diffexai/diffex-agent-core"; import { type BranchBounds, type Entry, @@ -16,8 +16,8 @@ import { type SessionRepo as SessionRepository, type SessionStats, type SessionStorage, -} from "@earendil-works/diffex-agent-core"; -import { uuidv7 } from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-agent-core"; +import { uuidv7 } from "@diffexai/diffex-ai"; import { appendEntryToBranchCache, buildCachedBranch, deleteBranchCache, rebuildBranchCache } from "./branch-cache.ts"; import { applyMigrations } from "./migrations.ts"; import { sql } from "./sql.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/search-backend.ts b/packages/session-backends/sqlite-node/src/sqlite/search-backend.ts index b0ffe3fc3..05cceab51 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/search-backend.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/search-backend.ts @@ -1,5 +1,5 @@ -import type { SessionSearch, SessionSearchHit, SessionSearchOptions } from "@earendil-works/diffex-agent-core"; -import { getFileSystemResultOrThrow } from "@earendil-works/diffex-agent-core"; +import type { SessionSearch, SessionSearchHit, SessionSearchOptions } from "@diffexai/diffex-agent-core"; +import { getFileSystemResultOrThrow } from "@diffexai/diffex-agent-core"; import { applyMigrations } from "./migrations.ts"; import { sql } from "./sql.ts"; import { decodeSessionMetadata, type SessionRow } from "./storage/sessions.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/branch-entries.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/branch-entries.ts index 5c174d12b..8b7cb43ba 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/branch-entries.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/branch-entries.ts @@ -1,4 +1,4 @@ -import type { Entry } from "@earendil-works/diffex-agent-core"; +import type { Entry } from "@diffexai/diffex-agent-core"; import { joinSqlFragments, sql } from "../sql.ts"; import type { SqliteDatabase } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/entries.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/entries.ts index 23e9a4ecc..26c36f312 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/entries.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/entries.ts @@ -1,4 +1,4 @@ -import type { Entry, EntryOrder } from "@earendil-works/diffex-agent-core"; +import type { Entry, EntryOrder } from "@diffexai/diffex-agent-core"; import { sql } from "../sql.ts"; import type { SqliteDatabase } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts index ba44e3b8c..a7d9a23d4 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/lanes.ts @@ -1,4 +1,4 @@ -import { SessionError } from "@earendil-works/diffex-agent-core"; +import { SessionError } from "@diffexai/diffex-agent-core"; import { sql } from "../sql.ts"; import type { SqliteDatabase } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/records.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/records.ts index 60dfe1d7f..c2716cc7a 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/records.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/records.ts @@ -1,4 +1,4 @@ -import { SessionError } from "@earendil-works/diffex-agent-core"; +import { SessionError } from "@diffexai/diffex-agent-core"; import { joinSqlFragments, sql } from "../sql.ts"; import type { SqliteDatabase } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/session-sequences.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/session-sequences.ts index 97d130a7b..593645b1a 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/session-sequences.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/session-sequences.ts @@ -1,4 +1,4 @@ -import { SessionError } from "@earendil-works/diffex-agent-core"; +import { SessionError } from "@diffexai/diffex-agent-core"; import { sql } from "../sql.ts"; import type { SqliteDatabase } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/session-stats.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/session-stats.ts index 99ee32656..81d7be433 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/session-stats.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/session-stats.ts @@ -1,5 +1,5 @@ -import { SessionError, type SessionStats } from "@earendil-works/diffex-agent-core"; -import type { Usage } from "@earendil-works/diffex-ai"; +import { SessionError, type SessionStats } from "@diffexai/diffex-agent-core"; +import type { Usage } from "@diffexai/diffex-ai"; import { sql } from "../sql.ts"; import type { SqliteDatabase } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/storage/sessions.ts b/packages/session-backends/sqlite-node/src/sqlite/storage/sessions.ts index 04d2b228f..51da62889 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/storage/sessions.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/storage/sessions.ts @@ -1,4 +1,4 @@ -import { assertJsonSerializable, SessionError } from "@earendil-works/diffex-agent-core"; +import { assertJsonSerializable, SessionError } from "@diffexai/diffex-agent-core"; import { sql } from "../sql.ts"; import type { SqliteDatabase, SqliteSessionMetadata } from "../types.ts"; diff --git a/packages/session-backends/sqlite-node/src/sqlite/types.ts b/packages/session-backends/sqlite-node/src/sqlite/types.ts index e66c9e00c..084339eec 100644 --- a/packages/session-backends/sqlite-node/src/sqlite/types.ts +++ b/packages/session-backends/sqlite-node/src/sqlite/types.ts @@ -1,4 +1,4 @@ -import type { FileSystem, SessionCreateOptions, SessionMetadata } from "@earendil-works/diffex-agent-core"; +import type { FileSystem, SessionCreateOptions, SessionMetadata } from "@diffexai/diffex-agent-core"; /** Result of a prepared SQLite statement execution. */ export interface SqliteRunResult { diff --git a/packages/session-backends/sqlite-node/test/branch-cache.test.ts b/packages/session-backends/sqlite-node/test/branch-cache.test.ts index 4b44a52b4..29762b3b3 100644 --- a/packages/session-backends/sqlite-node/test/branch-cache.test.ts +++ b/packages/session-backends/sqlite-node/test/branch-cache.test.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; import { describe, expect, it } from "vitest"; import { createNodeSqliteFactory, SqliteSessionRepository } from "../src/index.ts"; import { diff --git a/packages/session-backends/sqlite-node/test/branch-query.test.ts b/packages/session-backends/sqlite-node/test/branch-query.test.ts index cd0d4b19f..15689cf50 100644 --- a/packages/session-backends/sqlite-node/test/branch-query.test.ts +++ b/packages/session-backends/sqlite-node/test/branch-query.test.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; import { describe, expect, it } from "vitest"; import { createNodeSqliteFactory, SqliteSessionRepository } from "../src/index.ts"; import { createAssistantMessage, createTempDir, createUserMessage } from "./test-utils.ts"; diff --git a/packages/session-backends/sqlite-node/test/conformance.test.ts b/packages/session-backends/sqlite-node/test/conformance.test.ts index bdab063f8..0839a5c24 100644 --- a/packages/session-backends/sqlite-node/test/conformance.test.ts +++ b/packages/session-backends/sqlite-node/test/conformance.test.ts @@ -1,10 +1,10 @@ import { join } from "node:path"; -import type { SessionMetadata, SessionRepo } from "@earendil-works/diffex-agent-core"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; +import type { SessionMetadata, SessionRepo } from "@diffexai/diffex-agent-core"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; import { createSessionBackendConformance, type SessionBackendFixture, -} from "@earendil-works/diffex-agent-core/session/testing"; +} from "@diffexai/diffex-agent-core/session/testing"; import { describe, it } from "vitest"; import { createNodeSqliteFactory, type SqliteSessionMetadata, SqliteSessionRepository } from "../src/index.ts"; import { createTempDir } from "./test-utils.ts"; diff --git a/packages/session-backends/sqlite-node/test/repository.test.ts b/packages/session-backends/sqlite-node/test/repository.test.ts index 731dfa0a9..2e6f026e5 100644 --- a/packages/session-backends/sqlite-node/test/repository.test.ts +++ b/packages/session-backends/sqlite-node/test/repository.test.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; import { describe, expect, it } from "vitest"; import { createNodeSqliteFactory, diff --git a/packages/session-backends/sqlite-node/test/search.test.ts b/packages/session-backends/sqlite-node/test/search.test.ts index 019dd3d6d..45988cf26 100644 --- a/packages/session-backends/sqlite-node/test/search.test.ts +++ b/packages/session-backends/sqlite-node/test/search.test.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; import { describe, expect, it } from "vitest"; import { createNodeSqliteFactory, createSqliteSessionSearch, SqliteSessionRepository } from "../src/index.ts"; import { createSetupFailureSqlite, createTempDir, createUserMessage, getSqliteEntries } from "./test-utils.ts"; diff --git a/packages/session-backends/sqlite-node/test/test-utils.ts b/packages/session-backends/sqlite-node/test/test-utils.ts index e9d2c2d8d..c676a42c7 100644 --- a/packages/session-backends/sqlite-node/test/test-utils.ts +++ b/packages/session-backends/sqlite-node/test/test-utils.ts @@ -8,8 +8,8 @@ import type { Session as CoreSession, Entry, MessageEntry, -} from "@earendil-works/diffex-agent-core"; -import type { Usage } from "@earendil-works/diffex-ai"; +} from "@diffexai/diffex-agent-core"; +import type { Usage } from "@diffexai/diffex-ai"; import { afterEach, vi } from "vitest"; import type { SqliteDatabaseFactory, SqliteSessionMetadata } from "../src/index.ts"; diff --git a/packages/session-backends/sqlite-node/test/writer-leases.test.ts b/packages/session-backends/sqlite-node/test/writer-leases.test.ts index d5abe456a..35a4e5db0 100644 --- a/packages/session-backends/sqlite-node/test/writer-leases.test.ts +++ b/packages/session-backends/sqlite-node/test/writer-leases.test.ts @@ -1,5 +1,5 @@ import { join } from "node:path"; -import { NodeExecutionEnv } from "@earendil-works/diffex-agent-core/node"; +import { NodeExecutionEnv } from "@diffexai/diffex-agent-core/node"; import { describe, expect, it, vi } from "vitest"; import { createNodeSqliteFactory, type SqliteSessionMetadata, SqliteSessionRepository } from "../src/index.ts"; import { createTempDir, createUserMessage } from "./test-utils.ts"; diff --git a/packages/session-backends/sqlite-node/vitest.config.ts b/packages/session-backends/sqlite-node/vitest.config.ts index 3477a158e..83e28d304 100644 --- a/packages/session-backends/sqlite-node/vitest.config.ts +++ b/packages/session-backends/sqlite-node/vitest.config.ts @@ -23,11 +23,11 @@ export default defineConfig({ }, resolve: { alias: [ - { find: /^@earendil-works\/diffex-telemetry$/, replacement: telemetryIndex }, - { find: /^@earendil-works\/diffex-agent-core\/session\/testing$/, replacement: agentSessionTesting }, - { find: /^@earendil-works\/diffex-agent-core\/node$/, replacement: agentNode }, - { find: /^@earendil-works\/diffex-agent-core$/, replacement: agentIndex }, - { find: /^@earendil-works\/diffex-ai$/, replacement: aiIndex }, + { find: /^@diffexai\/diffex-telemetry$/, replacement: telemetryIndex }, + { find: /^@diffexai\/diffex-agent-core\/session\/testing$/, replacement: agentSessionTesting }, + { find: /^@diffexai\/diffex-agent-core\/node$/, replacement: agentNode }, + { find: /^@diffexai\/diffex-agent-core$/, replacement: agentIndex }, + { find: /^@diffexai\/diffex-ai$/, replacement: aiIndex }, ], }, }); diff --git a/packages/telemetry/README.md b/packages/telemetry/README.md index 28fa7f5ba..89a7806eb 100644 --- a/packages/telemetry/README.md +++ b/packages/telemetry/README.md @@ -1,4 +1,4 @@ -# @earendil-works/diffex-telemetry +# @diffexai/diffex-telemetry Vendor-neutral telemetry contracts and typed schema utilities for Diffex packages. @@ -33,7 +33,7 @@ Applications can use the in-memory reference or provide an adapter for OpenTelem ## Installation ```bash -npm install @earendil-works/diffex-telemetry +npm install @diffexai/diffex-telemetry ``` ## Telemetry Concepts @@ -69,7 +69,7 @@ A `TelemetryContext` starts a span around a callback. The callback receives a `T import { NOOP_TELEMETRY_CONTEXT, type TelemetryContext, -} from '@earendil-works/diffex-telemetry'; +} from '@diffexai/diffex-telemetry'; async function loadAccount( accountId: string, @@ -136,7 +136,7 @@ Adapters may activate backend-native ambient context internally for automatic in Use `NOOP_TELEMETRY_CONTEXT` when telemetry is optional: ```typescript -import { NOOP_TELEMETRY_CONTEXT } from '@earendil-works/diffex-telemetry'; +import { NOOP_TELEMETRY_CONTEXT } from '@diffexai/diffex-telemetry'; const result = await NOOP_TELEMETRY_CONTEXT.startSpan( { name: 'example.operation' }, @@ -156,7 +156,7 @@ The no-op context: `InMemoryTelemetryContext` is the backend-neutral reference implementation. It is useful for tests, local diagnostics, and applications that intentionally want process-local capture without an exporter: ```typescript -import { InMemoryTelemetryContext } from '@earendil-works/diffex-telemetry'; +import { InMemoryTelemetryContext } from '@diffexai/diffex-telemetry'; const telemetry = new InMemoryTelemetryContext(); @@ -177,13 +177,13 @@ The adapter is safe to use as an ordinary `TelemetryContext`, but storage is unb ## Adapter Conformance -`@earendil-works/diffex-telemetry/testing` exports a runner-independent conformance suite modeled as grouped cases. A fixture supplies a fresh context and converts its backend's finished spans into normalized `RecordedTelemetrySpan` snapshots: +`@diffexai/diffex-telemetry/testing` exports a runner-independent conformance suite modeled as grouped cases. A fixture supplies a fresh context and converts its backend's finished spans into normalized `RecordedTelemetrySpan` snapshots: ```typescript import { createTelemetryAdapterConformance, type TelemetryAdapterFixture, -} from '@earendil-works/diffex-telemetry/testing'; +} from '@diffexai/diffex-telemetry/testing'; import { describe, it } from 'vitest'; const conformance = createTelemetryAdapterConformance(async () => { @@ -216,7 +216,7 @@ The low-level span API intentionally accepts open names and attribute bags so ad import { createTypedSpanStarter, defineTelemetrySchema, -} from '@earendil-works/diffex-telemetry'; +} from '@diffexai/diffex-telemetry'; export const EXAMPLE_TELEMETRY_SCHEMA = defineTelemetrySchema({ version: 1, @@ -323,7 +323,7 @@ Attributes do not end the span. Returning, resolving, throwing, or rejecting fro A starter can compose multiple independently versioned schemas: ```typescript -import { AGENT_TELEMETRY_SCHEMAS } from '@earendil-works/diffex-agent-core'; +import { AGENT_TELEMETRY_SCHEMAS } from '@diffexai/diffex-agent-core'; const startAgentSpan = createTypedSpanStarter( telemetryContext, @@ -366,9 +366,9 @@ Adapters do not need to understand schema objects. Instrumentation helpers and t Package ownership is intentionally split: -- `@earendil-works/diffex-telemetry` owns the vendor-neutral contract, no-op and in-memory reference contexts, schema utilities, and adapter conformance suite; -- `@earendil-works/diffex-ai` accepts and propagates `telemetryContext` in provider request options but owns no telemetry schema; -- `@earendil-works/diffex-agent-core` owns and exports the Diffex AI-request and harness schemas, their combined readonly schema tuple, and typed span helpers. +- `@diffexai/diffex-telemetry` owns the vendor-neutral contract, no-op and in-memory reference contexts, schema utilities, and adapter conformance suite; +- `@diffexai/diffex-ai` accepts and propagates `telemetryContext` in provider request options but owns no telemetry schema; +- `@diffexai/diffex-agent-core` owns and exports the Diffex AI-request and harness schemas, their combined readonly schema tuple, and typed span helpers. ```typescript import { @@ -377,7 +377,7 @@ import { HARNESS_TELEMETRY_SCHEMA, startAiSpan, startHarnessSpan, -} from '@earendil-works/diffex-agent-core'; +} from '@diffexai/diffex-agent-core'; ``` The compatibility schemas use the established `diffex.ai.*`, `diffex.harness.*`, and `diffex.session.*` names. Adapters may translate them to backend conventions without changing the emitted vocabulary. diff --git a/packages/telemetry/package.json b/packages/telemetry/package.json index 4071d8a80..7c16bd6c1 100644 --- a/packages/telemetry/package.json +++ b/packages/telemetry/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-telemetry", + "name": "@diffexai/diffex-telemetry", "version": "0.2.0", "description": "Vendor-neutral telemetry contracts and typed schema utilities for Diffex", "type": "module", diff --git a/packages/tui/README.md b/packages/tui/README.md index 2e5c7874b..ae9ff636b 100644 --- a/packages/tui/README.md +++ b/packages/tui/README.md @@ -1,4 +1,4 @@ -# @earendil-works/diffex-tui +# @diffexai/diffex-tui Minimal terminal UI framework with differential rendering and synchronized output for flicker-free interactive CLI applications. @@ -18,7 +18,7 @@ Minimal terminal UI framework with differential rendering and synchronized outpu ## Quick Start ```typescript -import { type TUI, Text, Editor, ProcessTerminal, TuiMainScreen, matchesKey } from "@earendil-works/diffex-tui"; +import { type TUI, Text, Editor, ProcessTerminal, TuiMainScreen, matchesKey } from "@diffexai/diffex-tui"; // Create terminal const terminal = new ProcessTerminal(); @@ -62,7 +62,7 @@ tui.start(); - `TuiAltScreen` renders a fixed-height viewport in the alternate terminal buffer with application-owned scrolling. When stopped, it restores the main buffer and prints the complete final document. ```typescript -import { type TUI, TuiAltScreen, TuiMainScreen } from "@earendil-works/diffex-tui"; +import { type TUI, TuiAltScreen, TuiMainScreen } from "@diffexai/diffex-tui"; const tui: TUI = new TuiMainScreen(terminal); // To use an application-owned viewport in the alternate terminal buffer instead: @@ -89,7 +89,7 @@ import { ScrollView, Text, VStack, -} from "@earendil-works/diffex-tui"; +} from "@diffexai/diffex-tui"; const transcript = new Container(); transcript.addChild(new Text("History")); @@ -228,7 +228,7 @@ The TUI appends a full SGR reset and OSC 8 reset at the end of each rendered lin Components that display a text cursor and need IME (Input Method Editor) support should implement the `Focusable` interface: ```typescript -import { CURSOR_MARKER, type Component, type Focusable } from "@earendil-works/diffex-tui"; +import { CURSOR_MARKER, type Component, type Focusable } from "@diffexai/diffex-tui"; class MyInput implements Component, Focusable { focused: boolean = false; // Set by TUI when focus changes @@ -252,7 +252,7 @@ The cursor remains hidden by default. This keeps the fake cursor rendering, whil **Container components with embedded inputs:** When a container component (dialog, selector, etc.) contains an `Input` or `Editor` child, the container must implement `Focusable` and propagate the focus state to the child: ```typescript -import { Container, type Focusable, Input } from "@earendil-works/diffex-tui"; +import { Container, type Focusable, Input } from "@diffexai/diffex-tui"; class SearchDialog extends Container implements Focusable { private searchInput: Input; @@ -603,7 +603,7 @@ Supported formats: PNG, JPEG, GIF, WebP. Dimensions are parsed from the image he Supports both slash commands and file paths. ```typescript -import { CombinedAutocompleteProvider } from "@earendil-works/diffex-tui"; +import { CombinedAutocompleteProvider } from "@diffexai/diffex-tui"; const provider = new CombinedAutocompleteProvider( [ @@ -628,7 +628,7 @@ editor.setAutocompleteProvider(provider); Use `matchesKey()` with the `Key` helper for detecting keyboard input (supports Kitty keyboard protocol): ```typescript -import { matchesKey, Key } from "@earendil-works/diffex-tui"; +import { matchesKey, Key } from "@diffexai/diffex-tui"; if (matchesKey(data, Key.ctrl("c"))) { process.exit(0); @@ -688,7 +688,7 @@ interface Terminal { ## Utilities ```typescript -import { visibleWidth, truncateToWidth, wrapTextWithAnsi } from "@earendil-works/diffex-tui"; +import { visibleWidth, truncateToWidth, wrapTextWithAnsi } from "@diffexai/diffex-tui"; // Get visible width of string (ignoring ANSI codes) const width = visibleWidth("\x1b[31mHello\x1b[0m"); // 5 @@ -713,8 +713,8 @@ When creating custom components, **each line returned by `render()` must not exc Use `matchesKey()` with the `Key` helper for keyboard input: ```typescript -import { matchesKey, Key, truncateToWidth } from "@earendil-works/diffex-tui"; -import type { Component } from "@earendil-works/diffex-tui"; +import { matchesKey, Key, truncateToWidth } from "@diffexai/diffex-tui"; +import type { Component } from "@diffexai/diffex-tui"; class MyInteractiveComponent implements Component { private selectedIndex = 0; @@ -749,8 +749,8 @@ class MyInteractiveComponent implements Component { Use the provided utilities to ensure lines fit: ```typescript -import { visibleWidth, truncateToWidth } from "@earendil-works/diffex-tui"; -import type { Component } from "@earendil-works/diffex-tui"; +import { visibleWidth, truncateToWidth } from "@diffexai/diffex-tui"; +import type { Component } from "@diffexai/diffex-tui"; class MyComponent implements Component { private text: string; diff --git a/packages/tui/package.json b/packages/tui/package.json index 7efd186e6..36f12ca29 100644 --- a/packages/tui/package.json +++ b/packages/tui/package.json @@ -1,5 +1,5 @@ { - "name": "@earendil-works/diffex-tui", + "name": "@diffexai/diffex-tui", "version": "0.2.0", "description": "Terminal User Interface library with differential rendering for efficient text-based applications", "type": "module", diff --git a/packages/tui/src/layout-node.ts b/packages/tui/src/layout-node.ts index 90dd86bd5..ac4e14b9d 100644 --- a/packages/tui/src/layout-node.ts +++ b/packages/tui/src/layout-node.ts @@ -1,6 +1,6 @@ import type { Component } from "./tui.ts"; -export const LAYOUT_NODE = Symbol.for("@earendil-works/diffex-tui/layout-node"); +export const LAYOUT_NODE = Symbol.for("@diffexai/diffex-tui/layout-node"); export interface LayoutViewport { width: number; diff --git a/packages/tui/src/tui.ts b/packages/tui/src/tui.ts index 8b621fad9..cb83adcd8 100644 --- a/packages/tui/src/tui.ts +++ b/packages/tui/src/tui.ts @@ -334,7 +334,7 @@ export interface TUI extends Component { queryTerminalColorScheme(options: { timeoutMs: number }): Promise; } -export const VIEWPORT_TUI = Symbol.for("@earendil-works/diffex-tui/viewport"); +export const VIEWPORT_TUI = Symbol.for("@diffexai/diffex-tui/viewport"); export interface ViewportTUI extends TUI { readonly [VIEWPORT_TUI]: true; diff --git a/scripts/agent-treeshake-smoke-entry.ts b/scripts/agent-treeshake-smoke-entry.ts index 2514166be..02122522a 100644 --- a/scripts/agent-treeshake-smoke-entry.ts +++ b/scripts/agent-treeshake-smoke-entry.ts @@ -1,6 +1,6 @@ -import { Agent } from "@earendil-works/diffex-agent-core"; -import { createModels } from "@earendil-works/diffex-ai"; -import { anthropicProvider } from "@earendil-works/diffex-ai/providers/anthropic"; +import { Agent } from "@diffexai/diffex-agent-core"; +import { createModels } from "@diffexai/diffex-ai"; +import { anthropicProvider } from "@diffexai/diffex-ai/providers/anthropic"; const models = createModels(); models.setProvider(anthropicProvider()); diff --git a/scripts/browser-smoke-entry.ts b/scripts/browser-smoke-entry.ts index 094651188..7ef6cc48a 100644 --- a/scripts/browser-smoke-entry.ts +++ b/scripts/browser-smoke-entry.ts @@ -1,6 +1,6 @@ -import { DiffexClient } from "@earendil-works/diffex-client"; -import { createAssistantMessageEventStream, Type } from "@earendil-works/diffex-ai"; -import { complete, getModel, getProviders, streamSimple } from "@earendil-works/diffex-ai/compat"; +import { DiffexClient } from "@diffexai/diffex-client"; +import { createAssistantMessageEventStream, Type } from "@diffexai/diffex-ai"; +import { complete, getModel, getProviders, streamSimple } from "@diffexai/diffex-ai/compat"; import { Agent, bashExecutionToText, @@ -17,8 +17,8 @@ import { streamProxy, toError, truncateHead, -} from "@earendil-works/diffex-agent-core"; -import { decodeCbor, encodeCbor, PROTOCOL_VERSION } from "@earendil-works/diffex-protocol"; +} from "@diffexai/diffex-agent-core"; +import { decodeCbor, encodeCbor, PROTOCOL_VERSION } from "@diffexai/diffex-protocol"; // Keep this entry browser-safe. It is bundled by scripts/check-browser-smoke.mjs // to catch accidental Node-only runtime imports in browser-facing package exports. diff --git a/scripts/check-pinned-deps.mjs b/scripts/check-pinned-deps.mjs index f9e9f41fd..b8b06e8ab 100644 --- a/scripts/check-pinned-deps.mjs +++ b/scripts/check-pinned-deps.mjs @@ -21,10 +21,6 @@ function collectPackageJsonFiles(directory) { } } -function isInternalWorkspaceDependency(name) { - return name.startsWith("@earendil-works/diffex-"); -} - function isNonRegistrySpecifier(specifier) { return /^(?:workspace:|file:|link:|portal:|git\+|github:|git:|https?:|ssh:|git:\/\/)/.test(specifier); } @@ -49,7 +45,7 @@ for (const file of packageJsonFiles.sort()) { if (!dependencies) continue; for (const [name, specifier] of Object.entries(dependencies)) { - if (isInternalWorkspaceDependency(name) || isNonRegistrySpecifier(specifier)) continue; + if (name === "@diffexai/diffex" || name.startsWith("@diffexai/diffex-") || isNonRegistrySpecifier(specifier)) continue; if (exactVersionPattern.test(getVersionSpecifier(specifier))) continue; failures.push(`${file}: ${section}.${name} must be pinned, found ${specifier}`); } diff --git a/scripts/generate-coding-agent-install-lock.mjs b/scripts/generate-coding-agent-install-lock.mjs index b0d63410b..9f09ec85e 100644 --- a/scripts/generate-coding-agent-install-lock.mjs +++ b/scripts/generate-coding-agent-install-lock.mjs @@ -11,8 +11,8 @@ const outputDir = join(codingAgentDir, "install-lock"); const rootLockfilePath = join(repoRoot, "package-lock.json"); const outputPackageJsonPath = join(outputDir, "package.json"); const outputLockfilePath = join(outputDir, "package-lock.json"); -const internalPackagePrefix = "@earendil-works/diffex-"; -const installPackageName = "@earendil-works/diffex-coding-agent-install"; +const internalPackagePrefix = "@diffexai/diffex-"; +const installPackageName = "@diffexai/diffex-coding-agent-install"; const allowedInstallScriptPackages = new Map([ ["@google/genai@1.52.0", "preinstall is a no-op in the published package"], ["protobufjs@7.6.5", "postinstall only warns about protobufjs version scheme mismatches"], @@ -143,7 +143,7 @@ function getInternalWorkspaces(lockPackages) { if (!lockPath.startsWith("packages/") || lockPath.includes("/node_modules/") || !entry.name || !entry.version) { continue; } - if (!entry.name.startsWith(internalPackagePrefix)) { + if (entry.name !== "@diffexai/diffex" && !entry.name.startsWith(internalPackagePrefix)) { continue; } @@ -294,7 +294,10 @@ function validateGeneratedFiles(installerPackageJson, installLock, internalNames if (entry.dev || entry.devOptional || entry.extraneous) { errors.push(`${lockPath || "root"} contains dev/extraneous metadata`); } - if (packageName?.startsWith(internalPackagePrefix) && entry.version !== installerPackageJson.version) { + if ( + (packageName === "@diffexai/diffex" || packageName?.startsWith(internalPackagePrefix)) && + entry.version !== installerPackageJson.version + ) { errors.push(`${lockPath} internal package version ${entry.version} does not match ${installerPackageJson.version}`); } if (entry.hasInstallScript) { diff --git a/scripts/generate-coding-agent-shrinkwrap.mjs b/scripts/generate-coding-agent-shrinkwrap.mjs index 0507051d5..90739d049 100644 --- a/scripts/generate-coding-agent-shrinkwrap.mjs +++ b/scripts/generate-coding-agent-shrinkwrap.mjs @@ -9,7 +9,7 @@ const repoRoot = resolve(scriptDir, ".."); const codingAgentDir = join(repoRoot, "packages/coding-agent"); const rootLockfilePath = join(repoRoot, "package-lock.json"); const shrinkwrapPath = join(codingAgentDir, "npm-shrinkwrap.json"); -const internalPackagePrefix = "@earendil-works/diffex-"; +const internalPackagePrefix = "@diffexai/diffex-"; const allowedInstallScriptPackages = new Map([ ["@google/genai@1.52.0", "preinstall is a no-op in the published package"], ["protobufjs@7.6.5", "postinstall only warns about protobufjs version scheme mismatches"], @@ -136,7 +136,7 @@ function getInternalWorkspaces(lockPackages) { if (!lockPath.startsWith("packages/") || lockPath.includes("/node_modules/") || !entry.name || !entry.version) { continue; } - if (!entry.name.startsWith(internalPackagePrefix)) { + if (entry.name !== "@diffexai/diffex" && !entry.name.startsWith(internalPackagePrefix)) { continue; } diff --git a/scripts/local-release.mjs b/scripts/local-release.mjs index 56e9cbbc0..4646b081f 100644 --- a/scripts/local-release.mjs +++ b/scripts/local-release.mjs @@ -6,16 +6,16 @@ import { isAbsolute, join, relative, resolve } from "node:path"; import { spawnSync } from "node:child_process"; const packages = [ - { directory: "packages/harness-state", name: "@earendil-works/diffex-harness-state" }, - { directory: "packages/telemetry", name: "@earendil-works/diffex-telemetry" }, - { directory: "packages/ai", name: "@earendil-works/diffex-ai" }, - { directory: "packages/tui", name: "@earendil-works/diffex-tui" }, - { directory: "packages/agent", name: "@earendil-works/diffex-agent-core" }, - { directory: "packages/protocol", name: "@earendil-works/diffex-protocol" }, - { directory: "packages/client", name: "@earendil-works/diffex-client" }, - { directory: "packages/session-backends/sqlite-node", name: "@earendil-works/diffex-session-backend-sqlite-node" }, - { directory: "packages/server", name: "@earendil-works/diffex-server" }, - { directory: "packages/coding-agent", name: "@earendil-works/diffex-coding-agent" }, + { directory: "packages/harness-state", name: "@diffexai/diffex-harness-state" }, + { directory: "packages/telemetry", name: "@diffexai/diffex-telemetry" }, + { directory: "packages/ai", name: "@diffexai/diffex-ai" }, + { directory: "packages/tui", name: "@diffexai/diffex-tui" }, + { directory: "packages/agent", name: "@diffexai/diffex-agent-core" }, + { directory: "packages/protocol", name: "@diffexai/diffex-protocol" }, + { directory: "packages/client", name: "@diffexai/diffex-client" }, + { directory: "packages/session-backends/sqlite-node", name: "@diffexai/diffex-session-backend-sqlite-node" }, + { directory: "packages/server", name: "@diffexai/diffex-server" }, + { directory: "packages/coding-agent", name: "@diffexai/diffex" }, ]; const privateBuildPackages = [{ directory: "packages/harness-trace" }]; diff --git a/scripts/sync-versions.js b/scripts/sync-versions.js index 996607f75..19bc0eb79 100644 --- a/scripts/sync-versions.js +++ b/scripts/sync-versions.js @@ -48,7 +48,7 @@ for (const pkg of workspacePackages) { } for (const [dependencyName, currentSpecifier] of Object.entries(dependencies)) { - // Registry aliases such as `npm:@earendil-works/diffex-ai@0.1.2` are never workspace-linked, + // Registry aliases such as `npm:@diffexai/diffex-ai@0.1.2` are never workspace-linked, // so lockstep bumping them would point at a version that is not published yet. const version = versionMap.get(dependencyName); const newSpecifier = version ? `^${version}` : null; diff --git a/scripts/sync-versions.test.mjs b/scripts/sync-versions.test.mjs index 339c216e3..c5f7bbc7e 100644 --- a/scripts/sync-versions.test.mjs +++ b/scripts/sync-versions.test.mjs @@ -29,20 +29,20 @@ test("synchronizes private dependencies without touching registry aliases, gener const root = await mkdtemp(join(tmpdir(), "diffex-sync-versions-")); try { await writeManifest(root, "packages/ai", { - name: "@earendil-works/diffex-ai", + name: "@diffexai/diffex-ai", version: "2.0.0", }); await writeManifest(root, "packages/coding-agent", { - name: "@earendil-works/diffex-coding-agent", + name: "@diffexai/diffex", version: "2.0.0", }); await writeManifest(root, "packages/evals", { - name: "@earendil-works/diffex-evals", + name: "@diffexai/diffex-evals", version: "9.9.9", private: true, dependencies: { - "@earendil-works/diffex-coding-agent": "^1.0.0", - "@mariozechner/pi-ai": "npm:@earendil-works/diffex-ai@1.0.0", + "@diffexai/diffex": "^1.0.0", + "@mariozechner/pi-ai": "npm:@diffexai/diffex-ai@1.0.0", }, }); await writeManifest(root, "packages/coding-agent/install-lock", { @@ -50,7 +50,7 @@ test("synchronizes private dependencies without touching registry aliases, gener version: "0.0.0", private: true, dependencies: { - "@earendil-works/diffex-coding-agent": "^1.0.0", + "@diffexai/diffex": "^1.0.0", }, }); @@ -58,13 +58,13 @@ test("synchronizes private dependencies without touching registry aliases, gener assert.equal(result.status, 0, result.stderr); const evalsManifest = await readManifest(root, "packages/evals"); - assert.equal(evalsManifest.dependencies["@earendil-works/diffex-coding-agent"], "^2.0.0"); - assert.equal(evalsManifest.dependencies["@mariozechner/pi-ai"], "npm:@earendil-works/diffex-ai@1.0.0"); + assert.equal(evalsManifest.dependencies["@diffexai/diffex"], "^2.0.0"); + assert.equal(evalsManifest.dependencies["@mariozechner/pi-ai"], "npm:@diffexai/diffex-ai@1.0.0"); const generatedManifest = await readManifest(root, "packages/coding-agent/install-lock"); - assert.equal(generatedManifest.dependencies["@earendil-works/diffex-coding-agent"], "^1.0.0"); + assert.equal(generatedManifest.dependencies["@diffexai/diffex"], "^1.0.0"); await writeManifest(root, "packages/ai", { - name: "@earendil-works/diffex-ai", + name: "@diffexai/diffex-ai", version: "3.0.0", }); const lockstepFailure = runSyncVersions(root); diff --git a/tsconfig.json b/tsconfig.json index e1b7fdeba..8194778cd 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,41 +8,41 @@ "*": ["./*"], "#evolution": ["./packages/evolution/src/index.ts"], "#harness-trace": ["./packages/harness-trace/src/index.ts"], - "@earendil-works/diffex-evolution": ["./packages/evolution/src/index.ts"], - "@earendil-works/diffex-harness-state": ["./packages/harness-state/src/index.ts"], - "@earendil-works/diffex-harness-trace": ["./packages/harness-trace/src/index.ts"], - "@earendil-works/diffex-telemetry": ["./packages/telemetry/src/index.ts"], - "@earendil-works/diffex-telemetry/testing": ["./packages/telemetry/src/testing/index.ts"], - "@earendil-works/diffex-ai": ["./packages/ai/src/index.ts"], - "@earendil-works/diffex-ai/oauth": ["./packages/ai/src/oauth.ts"], - "@earendil-works/diffex-ai/*": ["./packages/ai/src/*.ts", "./packages/ai/src/providers/*.ts"], - "@earendil-works/diffex-ai/dist/*": ["./packages/ai/src/*"], - "@earendil-works/diffex-agent-core": ["./packages/agent/src/index.ts"], - "@earendil-works/diffex-agent-core/node": ["./packages/agent/src/node.ts"], - "@earendil-works/diffex-agent-core/session/testing": [ + "@diffexai/diffex-evolution": ["./packages/evolution/src/index.ts"], + "@diffexai/diffex-harness-state": ["./packages/harness-state/src/index.ts"], + "@diffexai/diffex-harness-trace": ["./packages/harness-trace/src/index.ts"], + "@diffexai/diffex-telemetry": ["./packages/telemetry/src/index.ts"], + "@diffexai/diffex-telemetry/testing": ["./packages/telemetry/src/testing/index.ts"], + "@diffexai/diffex-ai": ["./packages/ai/src/index.ts"], + "@diffexai/diffex-ai/oauth": ["./packages/ai/src/oauth.ts"], + "@diffexai/diffex-ai/*": ["./packages/ai/src/*.ts", "./packages/ai/src/providers/*.ts"], + "@diffexai/diffex-ai/dist/*": ["./packages/ai/src/*"], + "@diffexai/diffex-agent-core": ["./packages/agent/src/index.ts"], + "@diffexai/diffex-agent-core/node": ["./packages/agent/src/node.ts"], + "@diffexai/diffex-agent-core/session/testing": [ "./packages/agent/src/harness/session/testing/index.ts" ], - "@earendil-works/diffex-agent-core/*": ["./packages/agent/src/*"], - "@earendil-works/diffex-session-backend-sqlite-node": ["./packages/session-backends/sqlite-node/src/index.ts"], - "@earendil-works/diffex-coding-agent": ["./packages/coding-agent/src/index.ts"], - "@earendil-works/diffex-coding-agent/hooks": ["./packages/coding-agent/src/core/hooks/index.ts"], - "@earendil-works/diffex-coding-agent/*": ["./packages/coding-agent/src/*"], - "@earendil-works/diffex-protocol": ["./packages/protocol/src/index.ts"], - "@earendil-works/diffex-protocol/*": ["./packages/protocol/src/*"], - "@earendil-works/diffex-client": ["./packages/client/src/index.ts"], - "@earendil-works/diffex-client/websocket": ["./packages/client/src/websocket.ts"], - "@earendil-works/diffex-client/*": ["./packages/client/src/*"], - "@earendil-works/diffex-server": ["./packages/server/src/index.ts"], - "@earendil-works/diffex-server/testing": ["./packages/server/src/testing/index.ts"], - "@earendil-works/diffex-server/websocket": [ + "@diffexai/diffex-agent-core/*": ["./packages/agent/src/*"], + "@diffexai/diffex-session-backend-sqlite-node": ["./packages/session-backends/sqlite-node/src/index.ts"], + "@diffexai/diffex": ["./packages/coding-agent/src/index.ts"], + "@diffexai/diffex/hooks": ["./packages/coding-agent/src/core/hooks/index.ts"], + "@diffexai/diffex/*": ["./packages/coding-agent/src/*"], + "@diffexai/diffex-protocol": ["./packages/protocol/src/index.ts"], + "@diffexai/diffex-protocol/*": ["./packages/protocol/src/*"], + "@diffexai/diffex-client": ["./packages/client/src/index.ts"], + "@diffexai/diffex-client/websocket": ["./packages/client/src/websocket.ts"], + "@diffexai/diffex-client/*": ["./packages/client/src/*"], + "@diffexai/diffex-server": ["./packages/server/src/index.ts"], + "@diffexai/diffex-server/testing": ["./packages/server/src/testing/index.ts"], + "@diffexai/diffex-server/websocket": [ "./packages/server/src/transports/websocket/index.ts" ], - "@earendil-works/diffex-server/*": ["./packages/server/src/*"], + "@diffexai/diffex-server/*": ["./packages/server/src/*"], "typebox": ["./node_modules/typebox"], - "@earendil-works/diffex-tui": ["./packages/tui/src/index.ts"], - "@earendil-works/diffex-tui/*": ["./packages/tui/src/*"], - "@earendil-works/diffex-agent-old": ["./packages/agent-old/src/index.ts"], - "@earendil-works/diffex-agent-old/*": ["./packages/agent-old/src/*"] + "@diffexai/diffex-tui": ["./packages/tui/src/index.ts"], + "@diffexai/diffex-tui/*": ["./packages/tui/src/*"], + "@diffexai/diffex-agent-old": ["./packages/agent-old/src/index.ts"], + "@diffexai/diffex-agent-old/*": ["./packages/agent-old/src/*"] } }, "include": ["packages/*/src/**/*", "packages/*/test/**/*", "packages/session-backends/*/src/**/*", "packages/session-backends/*/test/**/*", "packages/coding-agent/examples/**/*"], diff --git a/vitest.base.ts b/vitest.base.ts index 8e38e83c4..cc141f464 100644 --- a/vitest.base.ts +++ b/vitest.base.ts @@ -21,19 +21,19 @@ export default defineConfig({ alias: [ { find: /^#evolution$/, replacement: workspaceSourcePaths.evolutionIndex }, { find: /^#harness-trace$/, replacement: workspaceSourcePaths.harnessTraceIndex }, - { find: /^@earendil-works\/diffex-telemetry$/, replacement: workspaceSourcePaths.telemetryIndex }, - { find: /^@earendil-works\/diffex-telemetry\/testing$/, replacement: workspaceSourcePaths.telemetryTesting }, - { find: /^@earendil-works\/diffex-ai$/, replacement: workspaceSourcePaths.aiIndex }, - { find: /^@earendil-works\/diffex-ai\/compat$/, replacement: workspaceSourcePaths.aiCompat }, - { find: /^@earendil-works\/diffex-ai\/oauth$/, replacement: workspaceSourcePaths.aiOAuth }, + { find: /^@diffexai\/diffex-telemetry$/, replacement: workspaceSourcePaths.telemetryIndex }, + { find: /^@diffexai\/diffex-telemetry\/testing$/, replacement: workspaceSourcePaths.telemetryTesting }, + { find: /^@diffexai\/diffex-ai$/, replacement: workspaceSourcePaths.aiIndex }, + { find: /^@diffexai\/diffex-ai\/compat$/, replacement: workspaceSourcePaths.aiCompat }, + { find: /^@diffexai\/diffex-ai\/oauth$/, replacement: workspaceSourcePaths.aiOAuth }, { - find: /^@earendil-works\/diffex-ai\/providers\/(.+)$/, + find: /^@diffexai\/diffex-ai\/providers\/(.+)$/, replacement: `${workspaceSourcePaths.aiProviders}/$1.ts`, }, - { find: /^@earendil-works\/diffex-agent-core$/, replacement: workspaceSourcePaths.agentIndex }, - { find: /^@earendil-works\/diffex-harness-state$/, replacement: workspaceSourcePaths.harnessStateIndex }, - { find: /^@earendil-works\/diffex-harness-trace$/, replacement: workspaceSourcePaths.harnessTraceIndex }, - { find: /^@earendil-works\/diffex-tui$/, replacement: workspaceSourcePaths.tuiIndex }, + { find: /^@diffexai\/diffex-agent-core$/, replacement: workspaceSourcePaths.agentIndex }, + { find: /^@diffexai\/diffex-harness-state$/, replacement: workspaceSourcePaths.harnessStateIndex }, + { find: /^@diffexai\/diffex-harness-trace$/, replacement: workspaceSourcePaths.harnessTraceIndex }, + { find: /^@diffexai\/diffex-tui$/, replacement: workspaceSourcePaths.tuiIndex }, ], }, }); From 315a3d9d953a93a1fb15632322260f1c772027f5 Mon Sep 17 00:00:00 2001 From: Jay Yu Date: Wed, 9 Sep 2026 23:32:44 -0400 Subject: [PATCH 3/6] docs(coding-agent): record identity audit - Record verified package, repository, and local artifact identities - Separate reviewed historical residuals from unresolved operational branding - Preserve explicit handoff gates for backend and distribution phases --- docs/identity-phase1-handoff.md | 104 + identity-residual-allowlist.md | 3126 +++++++++++++++++++++++++++++++ 2 files changed, 3230 insertions(+) create mode 100644 docs/identity-phase1-handoff.md create mode 100644 identity-residual-allowlist.md diff --git a/docs/identity-phase1-handoff.md b/docs/identity-phase1-handoff.md new file mode 100644 index 000000000..122bf07f4 --- /dev/null +++ b/docs/identity-phase1-handoff.md @@ -0,0 +1,104 @@ +# Phase 1 identity handoff + +Status: incomplete pending operational provisioning, final contact/backend identities, and announcement approval. +Do not begin distribution cutover from this document until the open gates below are closed. +The source migration is based on `4d5859e71143d3c1ba29fa7df4e2068087ba2322`. + +## Confirmed identities + +| Identity | Final value | +|---|---| +| GitHub repository | `diffexai/diffex` | +| Repository URL | `https://github.com/diffexai/diffex` | +| npm scope | `@diffexai` | +| CLI package | `@diffexai/diffex` | +| CLI executable | `diffex` | +| Runtime image | `ghcr.io/diffexai/diffex-runtime` | +| Product author | DiffexAI | +| Legal copyright owner | Luntraa, Inc. | +| Website | `https://diffex.ai/`, verified in GitHub organization metadata | + +The package migration changes only the scope except for the coding-agent CLI. +The CLI uses the short package name shown below. +Private packages retain their existing suffixes under the new scope. + +| Workspace | Final package | Publication | +|---|---|---| +| `packages/agent` | `@diffexai/diffex-agent-core` | Public, phase 3 | +| `packages/ai` | `@diffexai/diffex-ai` | Public, phase 3 | +| `packages/client` | `@diffexai/diffex-client` | Public, phase 3 | +| `packages/coding-agent` | `@diffexai/diffex` | Public, phase 3 | +| `packages/coding-agent-server` | `@diffexai/diffex-coding-agent-server` | Public, phase 3 | +| `packages/harness-state` | `@diffexai/diffex-harness-state` | Public, phase 3 | +| `packages/protocol` | `@diffexai/diffex-protocol` | Public, phase 3 | +| `packages/server` | `@diffexai/diffex-server` | Public, phase 3 | +| `packages/session-backends/sqlite-node` | `@diffexai/diffex-session-backend-sqlite-node` | Public, phase 3 | +| `packages/telemetry` | `@diffexai/diffex-telemetry` | Public, phase 3 | +| `packages/tui` | `@diffexai/diffex-tui` | Public, phase 3 | +| `packages/evals` | `@diffexai/diffex-evals` | Private | +| `packages/evolution` | `@diffexai/diffex-evolution` | Private | +| `packages/harness-trace` | `@diffexai/diffex-harness-trace` | Private | +| `packages/coding-agent/install-lock` | `@diffexai/diffex-coding-agent-install` | Generated private installer | + +## Operational evidence + +Read-only checks on 2026-09-10 UTC established the following state. +The authenticated GitHub principal is `Pepps233`, with active organization-admin membership and repository-admin permission. +Both local origin URLs use `https://github.com/diffexai/diffex.git`. +The default branch is `main`; no repository transfer is needed. +Pages is disabled, and the repository has no webhooks or deploy keys. +The organization has no staff teams, and organization-wide two-factor authentication is not required. +The API lists no members or outside collaborators with two-factor authentication disabled. +The only repository environment is `diffex-model-upload`; it contains no secrets. +There are no repository Actions secrets. +Organization-secret inventory requires an additional `admin:org` token scope and returned HTTP 403. +Ruleset inspection returned HTTP 403 because this private repository's plan does not support the feature. +The organization-installation API lists `chatgpt-codex-connector` and `render`, both with selected-repository access. +Their selected repository lists and downstream deployment configuration remain unverified. +The `main` branch is unprotected. +The private-vulnerability-reporting endpoint returned HTTP 404, so that reporting channel is not verified. +The organization lists `hello@diffex.ai` as its public email, but this does not verify a security mailbox or delivery. +All eleven public package names returned HTTP 404 from the npm registry. +The local npm authentication check returned HTTP 401, so npm organization ownership and two-factor authentication remain unverified. +Browser discovery returned no connected browsers, so an existing npm web session could not be checked. + +## Publication hold and consumer inventory + +`.github/workflows/runtime-image.yml` has an unconditional false job condition that also blocks manual dispatch. +Keep it disabled through phase 1 and phase 2. +`Dockerfile.runtime` already labels the canonical repository and uses Node 24 for both stages. +`docs/cloud-runtime.md` identifies the target image and the `DAYTONA_SANDBOX_SNAPSHOT` consumer setting. +No production image digest or snapshot value is stored in this repository. +Daytona registry credentials, snapshot inventory, deployment allowlists, and the currently tested production digest require operator evidence. +Do not change those consumers in phase 1. + +Phase 3 configures the trusted publisher for every public package with repository `diffexai/diffex`, workflow `build-binaries.yml`, environment `npm-publish`, and action `npm publish`. +Do not bootstrap packages, configure publication credentials, publish npm packages, create release assets, publish GHCR images, or activate self-update in this phase. + +## Open gates + +| Step | Required evidence or decision | +|---|---| +| 1, 15 | Final security mailbox, staff team/token name, support identity, API/Radius hostnames, and OAuth identity names | +| 2 | npm organization control, owners and 2FA; provisioned security mailbox and staff team; organization 2FA policy | +| 3 | Organization-secret names and owners, App repository selections, security-reporting configuration, and remaining integrations | +| 4 | Approved staff authorization endpoint and token, provisioned non-publication integrations, positive and negative authorization tests | +| 11 | Operator inventory of the current production image, Daytona snapshot, credentials, and deployment allowlists | +| 12 | Approval to replace or remove the intentional company announcement; verified security contact | +| 13 | Resolve the active findings in `identity-residual-allowlist.md` and repeat final source/artifact scans | +| 15 | Close all open gates and provide the final operational identifiers to phase 2 | + +## Local verification + +`npm run check` and `npm run build:offline` passed after the package migration. +All eleven public workspaces passed `npm pack --dry-run --ignore-scripts`, local packing, and scans for stale active package identities in tarballs. +Historical changelogs were excluded from the active-package scan and are individually recorded in `identity-residual-allowlist.md`. +Lockfiles were regenerated with Node 24.13.0 and npm 11.15.0, followed by the repository shrinkwrap and installer-lock generators. +Using npm 10 would drop libc metadata, so use the documented newer npm toolchain for regeneration. +The initial non-E2E run encountered sandbox denials for loopback and Unix sockets. +The complete `./test.sh` run passed after granting the local socket access required by its mock servers. +The source archive was created from commit `76eef7af0` and passed its embedded model-data validation. +Generated declarations, the source archive, and the macOS standalone archive passed stale active-package identity scans. +The standalone binary returned version `0.2.0` and displayed help when launched from `/tmp` with an isolated agent directory and offline mode. +Exact artifact residuals and their byte offsets are recorded in `identity-residual-allowlist.md`. +The local Docker daemon is not running, so no container build or effective-image-label inspection was performed. diff --git a/identity-residual-allowlist.md b/identity-residual-allowlist.md new file mode 100644 index 000000000..622d04c30 --- /dev/null +++ b/identity-residual-allowlist.md @@ -0,0 +1,3126 @@ +# Identity residual allowlist + +Source revision: `76eef7af077298d1c7ab7a6b749e3fd2cc455c6c`. +Review date: 2026-09-10 UTC. +This records exact retained occurrences, not wildcard exemptions. +The unresolved table is a blocking inventory and does not authorize those identities. +This audit document and the phase-1 handoff contain descriptive historical identity text and are not executable identity configuration. + +## Reviewed source occurrences + +| Exact path and line | Exact retained string | Classification | Rationale | Retirement condition | +|---|---|---|---|---| +| LICENSE:189 | Copyright 2026 Luntraa, Inc. | Legal attribution | Confirmed copyright owner | Retain while legally required | +| README.md:29 | Harness](https://github.com/earendil-works/pi). | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| package-lock.json:778 | node_modules/@earendil-works/gondolin": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:780 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:796 | @earendil-works/gondolin-krun-runner-darwin-arm64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:797 | @earendil-works/gondolin-krun-runner-linux-x64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:800 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:802 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:816 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:818 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:832 | node_modules/@earendil-works/gondolin/node_modules/undici": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:5712 | packages/agent/node_modules/@earendil-works/pi-ai/node_modules/typebox": | External dependency | npm retains nested third-party dependency records under a prior Pi install path; no active workspace uses this identity | Remove when npm regeneration eliminates the nested record | +| package-lock.json:5886 | @earendil-works/gondolin": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| package-lock.json:5915 | packages/coding-agent/node_modules/@earendil-works/pi-agent-core/node_modules/typebox": | External dependency | npm retains nested third-party dependency records under a prior Pi install path; no active workspace uses this identity | Remove when npm regeneration eliminates the nested record | +| package-lock.json:5922 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/@anthropic-ai/sdk": | External dependency | npm retains nested third-party dependency records under a prior Pi install path; no active workspace uses this identity | Remove when npm regeneration eliminates the nested record | +| package-lock.json:5943 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/typebox": | External dependency | npm retains nested third-party dependency records under a prior Pi install path; no active workspace uses this identity | Remove when npm regeneration eliminates the nested record | +| packages/agent/CHANGELOG.md:12 | [#7707](https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/agent/CHANGELOG.md:19 | [#7611](https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/agent/CHANGELOG.md:20 | [#7646](https://github.com/earendil-works/pi/pull/7646)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/agent/CHANGELOG.md:21 | [#7367](https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/agent/CHANGELOG.md:22 | [#7568](https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/agent/CHANGELOG.md:28 | [#7707](https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/agent/CHANGELOG.md:50 | [#6618](https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/agent/CHANGELOG.md:56 | [#6901](https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Released history: [0.81.1] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:60 | [#6915](https://github.com/earendil-works/pi/issues/6915)). | Immutable changelog | Released history: [0.81.1] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:66 | [#6594](https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:67 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:67 | [#6834](https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:68 | @earendil-works/pi-ai/compat | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:68 | [#6851](https://github.com/earendil-works/pi/issues/6851)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:72 | [#6671](https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/agent/CHANGELOG.md:84 | [#6474](https://github.com/earendil-works/pi-mono/pull/6474)). | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/agent/CHANGELOG.md:99 | [#6417](https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:100 | [#6435](https://github.com/earendil-works/pi/issues/6435)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:104 | [#5536](https://github.com/earendil-works/pi/issues/5536)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:105 | [#6285](https://github.com/earendil-works/pi/pull/6285)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:106 | [#6343](https://github.com/earendil-works/pi/pull/6343)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:107 | [#6181](https://github.com/earendil-works/pi/issues/6181)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:108 | [#6242](https://github.com/earendil-works/pi/issues/6242)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/agent/CHANGELOG.md:132 | @earendil-works/pi-ai/providers/all | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/agent/CHANGELOG.md:135 | @earendil-works/pi-agent-core/base | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/agent/CHANGELOG.md:139 | [#5999](https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/agent/CHANGELOG.md:140 | [#5526](https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/agent/CHANGELOG.md:148 | [#5893](https://github.com/earendil-works/pi/issues/5893)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/agent/CHANGELOG.md:154 | @earendil-works/pi-agent-core/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/agent/CHANGELOG.md:154 | @earendil-works/pi-ai/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/agent/CHANGELOG.md:154 | [#5348](https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/agent/CHANGELOG.md:170 | [#5573](https://github.com/earendil-works/pi/issues/5573)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/agent/CHANGELOG.md:178 | [#5401](https://github.com/earendil-works/pi/issues/5401)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/agent/CHANGELOG.md:198 | [#4983](https://github.com/earendil-works/pi/issues/4983)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/agent/CHANGELOG.md:211 | [#4276](https://github.com/earendil-works/pi/issues/4276)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/agent/CHANGELOG.md:212 | [#4715](https://github.com/earendil-works/pi/issues/4715)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/agent/CHANGELOG.md:213 | [#4699](https://github.com/earendil-works/pi/issues/4699)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:74 | @earendil-works/pi-telemetry | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:75 | [#7339](https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:77 | [#7568](https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:78 | [#7638](https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:80 | [#7286](https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:88 | [#7560](https://github.com/earendil-works/pi/issues/7560)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:89 | [#7508](https://github.com/earendil-works/pi/issues/7508)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:90 | [#7328](https://github.com/earendil-works/pi/issues/7328)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:91 | [#7027](https://github.com/earendil-works/pi/issues/7027)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:95 | [#7199](https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:95 | [#7230](https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:96 | [#7676](https://github.com/earendil-works/pi/issues/7676)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:99 | [#7205](https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:100 | [#7358](https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:101 | [#7362](https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:102 | [#7364](https://github.com/earendil-works/pi/pull/7364)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:103 | [#7471](https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:104 | [#7494](https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:105 | [#7540](https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:106 | [#7672](https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:107 | [#7670](https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/ai/CHANGELOG.md:113 | [#7243](https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:118 | [#7158](https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:119 | [#7151](https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:120 | [#7272](https://github.com/earendil-works/pi/pull/7272)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:121 | [#7114](https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:122 | [#7168](https://github.com/earendil-works/pi/pull/7168)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:126 | [#7168](https://github.com/earendil-works/pi/pull/7168)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:130 | [#6951](https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:130 | [#6998](https://github.com/earendil-works/pi/issues/6998)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:131 | [#7174](https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:132 | [#7176](https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:133 | [#7288](https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:140 | [#5871](https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/ai/CHANGELOG.md:141 | [#7081](https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/ai/CHANGELOG.md:141 | [#7083](https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/ai/CHANGELOG.md:152 | [#7016](https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:156 | [#6935](https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:157 | [#6927](https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:163 | [#6928](https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:169 | [#6618](https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:170 | [#6946](https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:171 | [#6955](https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:172 | [#6980](https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:173 | [#6941](https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/ai/CHANGELOG.md:179 | [#6901](https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Released history: [0.81.1] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:189 | [#6858](https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:190 | [#6840](https://github.com/earendil-works/pi/pull/6840 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:191 | [#6834](https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:192 | [#6671](https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:196 | [#6765](https://github.com/earendil-works/pi/pull/6765 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:201 | [#6864](https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:202 | [#6854](https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:205 | [#6812](https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:206 | [#6834](https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:207 | [#6668](https://github.com/earendil-works/pi/issues/6668)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:209 | [#6727](https://github.com/earendil-works/pi/issues/6727)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:210 | [#6853](https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/ai/CHANGELOG.md:218 | [#6737](https://github.com/earendil-works/pi/issues/6737)). | Immutable changelog | Released history: [0.80.10] - 2026-07-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:219 | [#6736](https://github.com/earendil-works/pi/issues/6736)). | Immutable changelog | Released history: [0.80.10] - 2026-07-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:230 | [#6734](https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Released history: [0.80.9] - 2026-07-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:238 | [#6734](https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Released history: [0.80.9] - 2026-07-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:258 | [#6651](https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:268 | [#6630](https://github.com/earendil-works/pi-mono/issues/6630)). | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:274 | [#6496](https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:278 | [#6474](https://github.com/earendil-works/pi-mono/pull/6474)). | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:279 | [#6490](https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:280 | [#6588](https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:284 | [#6481](https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:285 | [#6544](https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:287 | [#6496](https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:288 | [#6532](https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:289 | [#6292](https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:290 | [#6598](https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:291 | [#6608](https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:292 | [#6611](https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:293 | [#6645](https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/ai/CHANGELOG.md:303 | [#6464](https://github.com/earendil-works/pi/issues/6464)). | Immutable changelog | Released history: [0.80.6] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:306 | [#6457](https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Released history: [0.80.6] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:314 | [#6449](https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:315 | [#6343](https://github.com/earendil-works/pi/pull/6343)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:316 | [#6204](https://github.com/earendil-works/pi/issues/6204)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:317 | [#6187](https://github.com/earendil-works/pi/issues/6187)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:318 | [#6187](https://github.com/earendil-works/pi/issues/6187)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:320 | [#6195](https://github.com/earendil-works/pi/issues/6195)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:321 | [#6235](https://github.com/earendil-works/pi/issues/6235)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:323 | [#6262](https://github.com/earendil-works/pi/issues/6262)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:324 | [#6268](https://github.com/earendil-works/pi/issues/6268)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:325 | [#6021](https://github.com/earendil-works/pi/issues/6021)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:327 | [#6265](https://github.com/earendil-works/pi/issues/6265)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:328 | [#6239](https://github.com/earendil-works/pi/issues/6239)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:329 | [#6431](https://github.com/earendil-works/pi/issues/6431)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:330 | [#6439](https://github.com/earendil-works/pi/issues/6439)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:335 | [#6341](https://github.com/earendil-works/pi/pull/6341)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:336 | [#6256](https://github.com/earendil-works/pi/issues/6256)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:337 | [#6200](https://github.com/earendil-works/pi/issues/6200)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:345 | [#6004](https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:346 | [#6057](https://github.com/earendil-works/pi/issues/6057)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:350 | [#4945](https://github.com/earendil-works/pi/issues/4945)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:355 | [#6138](https://github.com/earendil-works/pi/issues/6138)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:356 | [#5832](https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:357 | [#5595](https://github.com/earendil-works/pi/issues/5595)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:358 | [#6009](https://github.com/earendil-works/pi/issues/6009)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:359 | [#6019](https://github.com/earendil-works/pi/issues/6019)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:360 | [#6083](https://github.com/earendil-works/pi/issues/6083)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/ai/CHANGELOG.md:371 | [#6021](https://github.com/earendil-works/pi/issues/6021)). | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:372 | [#6016](https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:372 | [#6017](https://github.com/earendil-works/pi/issues/6017)). | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:373 | [#6020](https://github.com/earendil-works/pi/issues/6020)). | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:387 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:387 | @earendil-works/pi-ai/compat | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:387 | @earendil-works/pi-ai/providers/all | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:389 | @earendil-works/pi-ai/api/* | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:389 | @earendil-works/pi-ai/api/*`. | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:390 | @earendil-works/pi-ai/base | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:395 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:395 | @earendil-works/pi-ai/compat`. | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:399 | @earendil-works/pi-ai/providers/all | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:413 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:414 | @earendil-works/pi-ai/providers/anthropic | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:420 | @earendil-works/pi-ai/api/* | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:423 | @earendil-works/pi-ai/api/anthropic-messages | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:424 | @earendil-works/pi-ai/providers/all | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:442 | @earendil-works/pi-ai/providers/* | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:442 | @earendil-works/pi-ai/providers/all | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:450 | [#5526](https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:454 | [#5973](https://github.com/earendil-works/pi/issues/5973)). | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:455 | [#5967](https://github.com/earendil-works/pi/issues/5967)). | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:461 | [#5114](https://github.com/earendil-works/pi/issues/5114)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/ai/CHANGELOG.md:467 | [#5673](https://github.com/earendil-works/pi/issues/5673)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:471 | [#5923](https://github.com/earendil-works/pi/issues/5923)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:472 | [#5770](https://github.com/earendil-works/pi/issues/5770)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:473 | [#5897](https://github.com/earendil-works/pi/issues/5897)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:479 | @earendil-works/pi-ai/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/ai/CHANGELOG.md:479 | [#5348](https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/ai/CHANGELOG.md:480 | [#5854](https://github.com/earendil-works/pi/issues/5854)). | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/ai/CHANGELOG.md:481 | [#5866](https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/ai/CHANGELOG.md:487 | [#5860](https://github.com/earendil-works/pi/issues/5860)). | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:499 | [#5728](https://github.com/earendil-works/pi/issues/5728)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:503 | [#5819](https://github.com/earendil-works/pi/issues/5819)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:504 | [#5818](https://github.com/earendil-works/pi/issues/5818)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:505 | [#5770](https://github.com/earendil-works/pi/issues/5770)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:506 | [#5761](https://github.com/earendil-works/pi/issues/5761)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:507 | [#5760](https://github.com/earendil-works/pi/issues/5760)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:513 | [#5738](https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/ai/CHANGELOG.md:514 | [#4637](https://github.com/earendil-works/pi/issues/4637)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/ai/CHANGELOG.md:515 | [#5702](https://github.com/earendil-works/pi/issues/5702)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/ai/CHANGELOG.md:527 | [#5561](https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/ai/CHANGELOG.md:531 | [#5677](https://github.com/earendil-works/pi/issues/5677)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/ai/CHANGELOG.md:532 | [#5644](https://github.com/earendil-works/pi/issues/5644)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/ai/CHANGELOG.md:533 | [#4945](https://github.com/earendil-works/pi/issues/4945)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/ai/CHANGELOG.md:534 | [#5666](https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/ai/CHANGELOG.md:535 | [#5567](https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/ai/CHANGELOG.md:545 | [#5527](https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:546 | [#5330](https://github.com/earendil-works/pi/issues/5330)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:547 | [#5331](https://github.com/earendil-works/pi/issues/5331)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:548 | [#5531](https://github.com/earendil-works/pi/issues/5531)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:549 | [#5530](https://github.com/earendil-works/pi/issues/5530)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:550 | [#5559](https://github.com/earendil-works/pi/issues/5559)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:551 | [#5559](https://github.com/earendil-works/pi/issues/5559)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/ai/CHANGELOG.md:557 | [#5456](https://github.com/earendil-works/pi/issues/5456)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/ai/CHANGELOG.md:558 | [#5347](https://github.com/earendil-works/pi/issues/5347)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/ai/CHANGELOG.md:565 | [#5313](https://github.com/earendil-works/pi/issues/5313)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/ai/CHANGELOG.md:570 | [#4975](https://github.com/earendil-works/pi/issues/4975)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/ai/CHANGELOG.md:571 | [#5251](https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/ai/CHANGELOG.md:572 | [#5243](https://github.com/earendil-works/pi/issues/5243)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/ai/CHANGELOG.md:573 | [#5309](https://github.com/earendil-works/pi/issues/5309)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/ai/CHANGELOG.md:574 | [#5221](https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/ai/CHANGELOG.md:585 | [#5178](https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:589 | [#5159](https://github.com/earendil-works/pi-mono/issues/5159)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:590 | [#5169](https://github.com/earendil-works/pi-mono/issues/5169)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/ai/CHANGELOG.md:598 | [#4911](https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/ai/CHANGELOG.md:603 | [#4801](https://github.com/earendil-works/pi/issues/4801)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/ai/CHANGELOG.md:604 | [#5148](https://github.com/earendil-works/pi/issues/5148)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/ai/CHANGELOG.md:605 | [#4464](https://github.com/earendil-works/pi/issues/4464)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/ai/CHANGELOG.md:607 | [#5078](https://github.com/earendil-works/pi/issues/5078)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/ai/CHANGELOG.md:608 | [#5075](https://github.com/earendil-works/pi/issues/5075)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/ai/CHANGELOG.md:614 | [#4967](https://github.com/earendil-works/pi/issues/4967)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/ai/CHANGELOG.md:615 | [#4969](https://github.com/earendil-works/pi/issues/4969)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/ai/CHANGELOG.md:616 | [#4943](https://github.com/earendil-works/pi/issues/4943)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/ai/CHANGELOG.md:617 | [#4945](https://github.com/earendil-works/pi/issues/4945)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/ai/CHANGELOG.md:618 | [#4991](https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/ai/CHANGELOG.md:624 | [#4788](https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:628 | [#4797](https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:629 | [#4788](https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:630 | [#4842](https://github.com/earendil-works/pi/issues/4842)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:631 | [#4848](https://github.com/earendil-works/pi/issues/4848)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/ai/CHANGELOG.md:646 | [#4675](https://github.com/earendil-works/pi/issues/4675)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:647 | [#4720](https://github.com/earendil-works/pi/issues/4720)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/ai/CHANGELOG.md:655 | [#4678](https://github.com/earendil-works/pi/issues/4678)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:661 | [#4342](https://github.com/earendil-works/pi/issues/4342)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:662 | [#4223](https://github.com/earendil-works/pi/issues/4223)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:663 | [#4232](https://github.com/earendil-works/pi/issues/4232)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:664 | [#4505](https://github.com/earendil-works/pi/issues/4505)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:665 | [#4251](https://github.com/earendil-works/pi/issues/4251)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/ai/CHANGELOG.md:679 | [#4603](https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/ai/CHANGELOG.md:680 | [#4622](https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/ai/CHANGELOG.md:681 | [#4614](https://github.com/earendil-works/pi/issues/4614)). | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/ai/CHANGELOG.md:687 | [#3887](https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:688 | [#3624](https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:692 | [#4485](https://github.com/earendil-works/pi/issues/4485)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:693 | [#4345](https://github.com/earendil-works/pi/issues/4345)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:694 | [#4358](https://github.com/earendil-works/pi-mono/pull/4358 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:695 | [#4354](https://github.com/earendil-works/pi-mono/pull/4354 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:698 | [#4513](https://github.com/earendil-works/pi/issues/4513)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:703 | [#4563](https://github.com/earendil-works/pi/issues/4563)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:704 | [#4539](https://github.com/earendil-works/pi/issues/4539)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/ai/CHANGELOG.md:712 | [#4190](https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/ai/CHANGELOG.md:719 | [#4218](https://github.com/earendil-works/pi-mono/issues/4218)). | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/ai/CHANGELOG.md:720 | [#4184](https://github.com/earendil-works/pi-mono/issues/4184)). | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/ai/src/api/azure-openai-responses.ts:25 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/ai/src/api/openai-responses-shared.ts:518 | https://github.com/earendil-works/pi/issues/6409. | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/ai/src/api/openai-responses.ts:31 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/ai/test/openai-completions-empty-tools.test.ts:7 | https://github.com/earendil-works/pi-mono/issues/<issue-number> | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/ai/test/tool-call-id-normalization.test.ts:10 | https://github.com/earendil-works/pi-mono/issues/1022 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/client/CHANGELOG.md:9 | [#7708](https://github.com/earendil-works/pi/pull/7708)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:11 | [#7152](https://github.com/earendil-works/pi/issues/7152)). | Upstream history | Inherited upstream release record and provenance | Retain accurate historical facts | +| packages/coding-agent/CHANGELOG.md:20 | [#7128](https://github.com/earendil-works/pi/issues/7128)). | Upstream history | Inherited upstream release record and provenance | Retain accurate historical facts | +| packages/coding-agent/CHANGELOG.md:28 | [#7731](https://github.com/earendil-works/pi/issues/7731)). | Upstream history | Inherited upstream release record and provenance | Retain accurate historical facts | +| packages/coding-agent/CHANGELOG.md:48 | [#7290](https://github.com/earendil-works/pi/issues/7290)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:49 | [#7030](https://github.com/earendil-works/pi/issues/7030)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:117 | [#7707](https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:118 | [#7708](https://github.com/earendil-works/pi/pull/7708)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:123 | @earendil-works/pi-coding-agent/client | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:123 | [#7344](https://github.com/earendil-works/pi/pull/7344 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:123 | [#7348](https://github.com/earendil-works/pi/pull/7348 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:123 | [#7371](https://github.com/earendil-works/pi/pull/7371 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:123 | [#7409](https://github.com/earendil-works/pi/pull/7409)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:125 | [#7231](https://github.com/earendil-works/pi/pull/7231 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:126 | [#7304](https://github.com/earendil-works/pi/issues/7304)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:132 | [#7624](https://github.com/earendil-works/pi/pull/7624 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:134 | [#7681](https://github.com/earendil-works/pi/pull/7681 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:135 | [#7493](https://github.com/earendil-works/pi/pull/7493 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:138 | [#7568](https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:139 | [#7638](https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:141 | [#7339](https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:143 | [#7286](https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:144 | [#7367](https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:145 | [#7611](https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:146 | [#7448](https://github.com/earendil-works/pi/pull/7448 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:146 | [#7646](https://github.com/earendil-works/pi/pull/7646)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:156 | [#7684](https://github.com/earendil-works/pi/issues/7684)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:158 | [#7508](https://github.com/earendil-works/pi/issues/7508)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:159 | [#7328](https://github.com/earendil-works/pi/issues/7328)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:160 | [#7676](https://github.com/earendil-works/pi/issues/7676)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:162 | [#7707](https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:163 | [#6817](https://github.com/earendil-works/pi/issues/6817)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:165 | [#7064](https://github.com/earendil-works/pi/issues/7064 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:165 | [#7547](https://github.com/earendil-works/pi/issues/7547)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:166 | [#7572](https://github.com/earendil-works/pi/issues/7572)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:167 | [#7560](https://github.com/earendil-works/pi/issues/7560)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:169 | [#7327](https://github.com/earendil-works/pi/issues/7327)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:170 | [#7390](https://github.com/earendil-works/pi/pull/7390 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:175 | [#7333](https://github.com/earendil-works/pi/issues/7333)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:176 | [#7187](https://github.com/earendil-works/pi/issues/7187)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:178 | [#7292](https://github.com/earendil-works/pi/issues/7292)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:179 | [#7325](https://github.com/earendil-works/pi/pull/7325)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:180 | [#7319](https://github.com/earendil-works/pi/issues/7319)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:182 | [#7316](https://github.com/earendil-works/pi/issues/7316)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:183 | [#7301](https://github.com/earendil-works/pi/issues/7301 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:183 | [#7421](https://github.com/earendil-works/pi/pull/7421 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:185 | [#7027](https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:185 | [#7113](https://github.com/earendil-works/pi/issues/7113 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:185 | [#7418](https://github.com/earendil-works/pi/issues/7418)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:186 | [#7153](https://github.com/earendil-works/pi/issues/7153)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:187 | [#7443](https://github.com/earendil-works/pi/issues/7443)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:193 | [#6768](https://github.com/earendil-works/pi/issues/6768)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:194 | [#7579](https://github.com/earendil-works/pi/issues/7579)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:195 | [#7574](https://github.com/earendil-works/pi/issues/7574)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:196 | [#7656](https://github.com/earendil-works/pi/pull/7656 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:197 | [#7387](https://github.com/earendil-works/pi/pull/7387)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:198 | [#7435](https://github.com/earendil-works/pi/pull/7435 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:199 | [#7330](https://github.com/earendil-works/pi/pull/7330 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:200 | [#7552](https://github.com/earendil-works/pi/pull/7552 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:201 | [#7370](https://github.com/earendil-works/pi/pull/7370 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:202 | [#7540](https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:203 | [#7570](https://github.com/earendil-works/pi/pull/7570 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:204 | [#7569](https://github.com/earendil-works/pi/pull/7569 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:205 | [#7632](https://github.com/earendil-works/pi/pull/7632 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:208 | [#7205](https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:209 | [#7358](https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:210 | [#7362](https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:211 | [#7364](https://github.com/earendil-works/pi/pull/7364)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:212 | [#7471](https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:213 | [#7494](https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:214 | [#7672](https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:215 | [#7670](https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:216 | [#6987](https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:218 | [#7550](https://github.com/earendil-works/pi/pull/7550)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:219 | [#7581](https://github.com/earendil-works/pi/pull/7581)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:220 | [#7612](https://github.com/earendil-works/pi/pull/7612)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:221 | [#7657](https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:223 | [#7199](https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:223 | [#7230](https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:242 | [#7243](https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:246 | [#7168](https://github.com/earendil-works/pi/pull/7168)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:247 | [#7191](https://github.com/earendil-works/pi/pull/7191 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:247 | [#7215](https://github.com/earendil-works/pi/pull/7215)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:249 | [#7151](https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:250 | [#7272](https://github.com/earendil-works/pi/pull/7272)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:251 | [#7114](https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:252 | [#7158](https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:256 | [#7168](https://github.com/earendil-works/pi/pull/7168)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:260 | [#7180](https://github.com/earendil-works/pi/issues/7180)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:261 | [#7096](https://github.com/earendil-works/pi/issues/7096)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:262 | [#7221](https://github.com/earendil-works/pi/pull/7221 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:263 | [#7258](https://github.com/earendil-works/pi/pull/7258 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:264 | [#7022](https://github.com/earendil-works/pi/pull/7022 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:265 | [#7210](https://github.com/earendil-works/pi/pull/7210 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:266 | [#7211](https://github.com/earendil-works/pi/pull/7211 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:267 | [#7214](https://github.com/earendil-works/pi/pull/7214)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:268 | [#6968](https://github.com/earendil-works/pi/issues/6968)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:269 | [#7103](https://github.com/earendil-works/pi/pull/7103 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:270 | [#7110](https://github.com/earendil-works/pi/pull/7110 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:271 | [#6951](https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:271 | [#6998](https://github.com/earendil-works/pi/issues/6998)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:272 | [#7174](https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:273 | [#7176](https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:274 | [#7262](https://github.com/earendil-works/pi/pull/7262)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:275 | [#7288](https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:287 | [#7045](https://github.com/earendil-works/pi/pull/7045 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:288 | [#5871](https://github.com/earendil-works/pi/issues/5871)). | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:289 | [#7081](https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:289 | [#7083](https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:299 | [#5871](https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:300 | [#6949](https://github.com/earendil-works/pi/issues/6949 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:300 | [#7032](https://github.com/earendil-works/pi/pull/7032 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:301 | [#7106](https://github.com/earendil-works/pi/pull/7106 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:302 | [#7072](https://github.com/earendil-works/pi/pull/7072 | Immutable changelog | Released history: [0.82.1] - 2026-07-25 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:316 | [#6935](https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:317 | [#6927](https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:319 | [#6971](https://github.com/earendil-works/pi/pull/6971 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:323 | [#6928](https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:327 | [#6946](https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:328 | [#6941](https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:329 | [#6955](https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:330 | [#6958](https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:331 | [#6903](https://github.com/earendil-works/pi/pull/6903 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:332 | [#6964](https://github.com/earendil-works/pi/pull/6964 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:333 | [#6618](https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:334 | [#6977](https://github.com/earendil-works/pi/issues/6977)). | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:335 | [#6210](https://github.com/earendil-works/pi/issues/6210)). | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:336 | [#6980](https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:337 | [#7016](https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:338 | [#7015](https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:339 | [#7034](https://github.com/earendil-works/pi/pull/7034 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:341 | [#7005](https://github.com/earendil-works/pi/issues/7005)). | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:342 | [#7009](https://github.com/earendil-works/pi/pull/7009 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:343 | [#6999](https://github.com/earendil-works/pi/issues/6999)). | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:354 | [#6913](https://github.com/earendil-works/pi/pull/6913 | Immutable changelog | Released history: [0.81.1] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:358 | [#6901](https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Released history: [0.81.1] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:360 | [#6915](https://github.com/earendil-works/pi/issues/6915)). | Immutable changelog | Released history: [0.81.1] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:374 | [#6858](https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:375 | [#6865](https://github.com/earendil-works/pi/pull/6865 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:376 | [#6772](https://github.com/earendil-works/pi/pull/6772 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:379 | [#6671](https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:383 | [#6896](https://github.com/earendil-works/pi/pull/6896 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:385 | [#6864](https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:386 | [#6854](https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:389 | [#6812](https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:390 | [#6790](https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:391 | [#6764](https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:392 | [#6844](https://github.com/earendil-works/pi/issues/6844)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:393 | [#6834](https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:394 | [#6853](https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:395 | [#6730](https://github.com/earendil-works/pi/pull/6730 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:396 | [#6731](https://github.com/earendil-works/pi/pull/6731 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:399 | [#6793](https://github.com/earendil-works/pi/issues/6793)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:400 | [#6695](https://github.com/earendil-works/pi/issues/6695)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:401 | [#6735](https://github.com/earendil-works/pi/issues/6735)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:403 | [#6727](https://github.com/earendil-works/pi/issues/6727)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:415 | [#6737](https://github.com/earendil-works/pi/issues/6737)). | Immutable changelog | Released history: [0.80.10] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:416 | [#6736](https://github.com/earendil-works/pi/issues/6736)). | Immutable changelog | Released history: [0.80.10] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:431 | [#6734](https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Released history: [0.80.9] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:440 | [#6734](https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Released history: [0.80.9] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:465 | [#6651](https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:477 | [#6630](https://github.com/earendil-works/pi-mono/issues/6630)). | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:478 | [#6697](https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:479 | [#6629](https://github.com/earendil-works/pi-mono/issues/6629)). | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:486 | [#6496](https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:496 | [#6474](https://github.com/earendil-works/pi-mono/pull/6474)). | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:497 | [#6490](https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:499 | [#6588](https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:503 | [#6481](https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:504 | [#6496](https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:507 | [#6532](https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:508 | [#6292](https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:509 | [#6523](https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:510 | [#6544](https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:511 | [#6595](https://github.com/earendil-works/pi-mono/pull/6595 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:512 | [#6598](https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:513 | [#6604](https://github.com/earendil-works/pi-mono/pull/6604 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:514 | [#6608](https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:515 | [#6611](https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:516 | [#6645](https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:517 | [#6621](https://github.com/earendil-works/pi/issues/6621)). | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:530 | [#6470](https://github.com/earendil-works/pi/pull/6470 | Immutable changelog | Released history: [0.80.6] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:534 | [#6464](https://github.com/earendil-works/pi/issues/6464)). | Immutable changelog | Released history: [0.80.6] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:537 | [#6457](https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Released history: [0.80.6] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:553 | [#6200](https://github.com/earendil-works/pi/issues/6200)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:556 | [#6201](https://github.com/earendil-works/pi/issues/6201)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:557 | [#6363](https://github.com/earendil-works/pi/issues/6363)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:558 | [#6350](https://github.com/earendil-works/pi/pull/6350 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:559 | [#6267](https://github.com/earendil-works/pi/pull/6267 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:561 | [#6309](https://github.com/earendil-works/pi/pull/6309)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:562 | [#6435](https://github.com/earendil-works/pi/issues/6435)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:563 | [#6417](https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:568 | [#6449](https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:569 | [#6239](https://github.com/earendil-works/pi/issues/6239)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:570 | [#6187](https://github.com/earendil-works/pi/issues/6187)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:571 | [#6268](https://github.com/earendil-works/pi/issues/6268)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:572 | [#6262](https://github.com/earendil-works/pi/issues/6262)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:573 | [#6195](https://github.com/earendil-works/pi/issues/6195)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:574 | [#6430](https://github.com/earendil-works/pi/pull/6430 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:575 | [#6418](https://github.com/earendil-works/pi/pull/6418 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:576 | [#6439](https://github.com/earendil-works/pi/issues/6439)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:577 | [#6397](https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:578 | [#6343](https://github.com/earendil-works/pi/pull/6343)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:579 | [#6285](https://github.com/earendil-works/pi/pull/6285)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:581 | [#6265](https://github.com/earendil-works/pi/issues/6265)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:582 | [#6235](https://github.com/earendil-works/pi/issues/6235)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:585 | [#6279](https://github.com/earendil-works/pi/pull/6279 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:586 | [#6204](https://github.com/earendil-works/pi/issues/6204)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:587 | [#6231](https://github.com/earendil-works/pi/issues/6231)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:588 | [#6189](https://github.com/earendil-works/pi/issues/6189)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:589 | [#6223](https://github.com/earendil-works/pi/issues/6223)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:590 | [#5536](https://github.com/earendil-works/pi/issues/5536)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:591 | [#6326](https://github.com/earendil-works/pi/issues/6326)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:593 | [#6181](https://github.com/earendil-works/pi/issues/6181)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:594 | [#6278](https://github.com/earendil-works/pi/issues/6278)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:595 | [#6354](https://github.com/earendil-works/pi/issues/6354)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:596 | [#6431](https://github.com/earendil-works/pi/issues/6431)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:597 | [#6367](https://github.com/earendil-works/pi/issues/6367)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:598 | [#6369](https://github.com/earendil-works/pi/issues/6369)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:599 | [#6407](https://github.com/earendil-works/pi/issues/6407)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:600 | [#6395](https://github.com/earendil-works/pi/issues/6395)). | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:620 | [#6078](https://github.com/earendil-works/pi/pull/6078 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:622 | [#6175](https://github.com/earendil-works/pi/pull/6175 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:623 | [#6004](https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:624 | [#6057](https://github.com/earendil-works/pi/issues/6057)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:625 | [#6122](https://github.com/earendil-works/pi/issues/6122)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:626 | [#6168](https://github.com/earendil-works/pi/issues/6168)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:631 | [#4945](https://github.com/earendil-works/pi/issues/4945)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:636 | [#6138](https://github.com/earendil-works/pi/issues/6138)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:637 | [#5832](https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:638 | [#5595](https://github.com/earendil-works/pi/issues/5595)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:639 | [#6009](https://github.com/earendil-works/pi/issues/6009)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:640 | [#6083](https://github.com/earendil-works/pi/issues/6083)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:641 | [#6074](https://github.com/earendil-works/pi/pull/6074 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:642 | [#6048](https://github.com/earendil-works/pi/pull/6048 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:643 | [#6030](https://github.com/earendil-works/pi/pull/6030 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:643 | [#6063](https://github.com/earendil-works/pi/pull/6063 | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:644 | [#6162](https://github.com/earendil-works/pi/issues/6162)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:645 | [#6133](https://github.com/earendil-works/pi/issues/6133)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:647 | [#6026](https://github.com/earendil-works/pi/pull/6026)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:648 | [#6002](https://github.com/earendil-works/pi/issues/6002)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:649 | [#6105](https://github.com/earendil-works/pi/issues/6105)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:650 | [#4290](https://github.com/earendil-works/pi/issues/4290)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:651 | [#6070](https://github.com/earendil-works/pi/issues/6070)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:652 | [#6047](https://github.com/earendil-works/pi/issues/6047)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:653 | [#6019](https://github.com/earendil-works/pi/issues/6019)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:665 | [#6021](https://github.com/earendil-works/pi/issues/6021)). | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:666 | [#6016](https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:666 | [#6017](https://github.com/earendil-works/pi/issues/6017)). | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:667 | [#6020](https://github.com/earendil-works/pi/issues/6020)). | Immutable changelog | Released history: [0.80.2] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:682 | [#5965](https://github.com/earendil-works/pi/issues/5965)). | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:683 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:683 | @earendil-works/pi-ai/compat`. | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:683 | @earendil-works/pi-ai/compat | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:687 | [#5999](https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:688 | [#5784](https://github.com/earendil-works/pi/pull/5784 | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:690 | [#5526](https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:691 | [#5973](https://github.com/earendil-works/pi/issues/5973)). | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:695 | [#5967](https://github.com/earendil-works/pi/issues/5967)). | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:697 | [#5953](https://github.com/earendil-works/pi/issues/5953)). | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:701 | @earendil-works/pi-ai/base | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:701 | @earendil-works/pi-agent-core/base | Immutable changelog | Released history: [0.80.0] - 2026-06-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:712 | [#5962](https://github.com/earendil-works/pi/pull/5962 | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:716 | [#5960](https://github.com/earendil-works/pi/issues/5960)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:717 | [#5959](https://github.com/earendil-works/pi/issues/5959)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:718 | [#5114](https://github.com/earendil-works/pi/issues/5114)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:719 | [#5957](https://github.com/earendil-works/pi/issues/5957)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:720 | [#5943](https://github.com/earendil-works/pi/issues/5943)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:721 | [#5940](https://github.com/earendil-works/pi/issues/5940)). | Immutable changelog | Released history: [0.79.10] - 2026-06-22 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:734 | [#5673](https://github.com/earendil-works/pi/issues/5673)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:738 | [#5923](https://github.com/earendil-works/pi/issues/5923)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:739 | [#5905](https://github.com/earendil-works/pi/issues/5905)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:740 | [#5909](https://github.com/earendil-works/pi/issues/5909)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:741 | [#5770](https://github.com/earendil-works/pi/issues/5770)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:742 | [#5846](https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:743 | [#5899](https://github.com/earendil-works/pi/issues/5899)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:744 | [#5893](https://github.com/earendil-works/pi/issues/5893)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:745 | [#5897](https://github.com/earendil-works/pi/issues/5897)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:746 | [#5892](https://github.com/earendil-works/pi/issues/5892)). | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:752 | @earendil-works/pi-ai/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:752 | @earendil-works/pi-agent-core/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:759 | @earendil-works/pi-ai/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:759 | @earendil-works/pi-agent-core/base | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:759 | [#5348](https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:760 | [#5854](https://github.com/earendil-works/pi/issues/5854)). | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:761 | [#5877](https://github.com/earendil-works/pi/issues/5877)). | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:762 | [#5866](https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:767 | [#4811](https://github.com/earendil-works/pi/issues/4811)). | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:768 | [#5720](https://github.com/earendil-works/pi/issues/5720)). | Immutable changelog | Released history: [0.79.8] - 2026-06-19 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:781 | [#5874](https://github.com/earendil-works/pi/pull/5874)). | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:782 | [#5841](https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:783 | [#5869](https://github.com/earendil-works/pi/pull/5869 | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:784 | [#5756](https://github.com/earendil-works/pi/pull/5756 | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:794 | [#5868](https://github.com/earendil-works/pi/issues/5868)). | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:796 | [#5830](https://github.com/earendil-works/pi/issues/5830)). | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:815 | [#5798](https://github.com/earendil-works/pi/pull/5798 | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:817 | [#5790](https://github.com/earendil-works/pi/issues/5790)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:818 | [#5728](https://github.com/earendil-works/pi/issues/5728)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:826 | [#5819](https://github.com/earendil-works/pi/issues/5819)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:827 | [#5818](https://github.com/earendil-works/pi/issues/5818)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:829 | [#5789](https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:830 | [#5770](https://github.com/earendil-works/pi/issues/5770)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:831 | [#5805](https://github.com/earendil-works/pi/issues/5805)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:832 | [#5761](https://github.com/earendil-works/pi/issues/5761)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:833 | [#5747](https://github.com/earendil-works/pi/issues/5747)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:834 | [#5760](https://github.com/earendil-works/pi/issues/5760)). | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:845 | [#5739](https://github.com/earendil-works/pi/issues/5739)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:846 | [#5385](https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:850 | [#5753](https://github.com/earendil-works/pi/pull/5753 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:851 | [#5055](https://github.com/earendil-works/pi/issues/5055)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:852 | [#5724](https://github.com/earendil-works/pi/issues/5724)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:853 | [#5729](https://github.com/earendil-works/pi/issues/5729)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:854 | [#5708](https://github.com/earendil-works/pi/pull/5708 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:855 | [#5687](https://github.com/earendil-works/pi/issues/5687)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:856 | [#5689](https://github.com/earendil-works/pi/issues/5689)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:857 | [#5695](https://github.com/earendil-works/pi/issues/5695)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:858 | [#5738](https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:859 | [#4637](https://github.com/earendil-works/pi/issues/4637)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:860 | [#5702](https://github.com/earendil-works/pi/issues/5702)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:861 | [#5297](https://github.com/earendil-works/pi/issues/5297)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:862 | [#5618](https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:862 | [#4415](https://github.com/earendil-works/pi/issues/4415)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:863 | [#5661](https://github.com/earendil-works/pi/issues/5661)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:879 | [#5587](https://github.com/earendil-works/pi/pull/5587 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:880 | [#5561](https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:884 | [#5619](https://github.com/earendil-works/pi/issues/5619)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:885 | [#5627](https://github.com/earendil-works/pi/pull/5627 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:886 | [#5677](https://github.com/earendil-works/pi/issues/5677)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:887 | [#5644](https://github.com/earendil-works/pi/issues/5644)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:888 | [#5666](https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:889 | [#4945](https://github.com/earendil-works/pi/issues/4945)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:890 | [#5567](https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:891 | [#5573](https://github.com/earendil-works/pi/issues/5573)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:892 | [#5657](https://github.com/earendil-works/pi/issues/5657)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:894 | [#5618](https://github.com/earendil-works/pi/issues/5618)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:895 | [#5585](https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:896 | [#5562](https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:897 | [#5643](https://github.com/earendil-works/pi/issues/5643)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:898 | [#5669](https://github.com/earendil-works/pi/issues/5669)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:899 | [#5596](https://github.com/earendil-works/pi/issues/5596)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:900 | [#5560](https://github.com/earendil-works/pi/pull/5560 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:913 | [#5553](https://github.com/earendil-works/pi/pull/5553 | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:914 | [#5547](https://github.com/earendil-works/pi/pull/5547 | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:915 | [#5523](https://github.com/earendil-works/pi/issues/5523)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:917 | [#4703](https://github.com/earendil-works/pi/issues/4703)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:918 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:922 | [#5527](https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:923 | [#5283](https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:924 | [#5330](https://github.com/earendil-works/pi/issues/5330)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:925 | [#5331](https://github.com/earendil-works/pi/issues/5331)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:926 | [#5531](https://github.com/earendil-works/pi/issues/5531)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:927 | [#5530](https://github.com/earendil-works/pi/issues/5530)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:928 | [#5559](https://github.com/earendil-works/pi/issues/5559)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:929 | [#5559](https://github.com/earendil-works/pi/issues/5559)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:930 | [#5494](https://github.com/earendil-works/pi/issues/5494)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:931 | [#5495](https://github.com/earendil-works/pi/issues/5495)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:932 | [#5433](https://github.com/earendil-works/pi/issues/5433)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:933 | [#5377](https://github.com/earendil-works/pi/issues/5377)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:934 | [#5418](https://github.com/earendil-works/pi/issues/5418)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:935 | [#5516](https://github.com/earendil-works/pi/issues/5516)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:937 | [#5045](https://github.com/earendil-works/pi/issues/5045)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:938 | [#4841](https://github.com/earendil-works/pi/issues/4841)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:952 | [#5332](https://github.com/earendil-works/pi/pull/5332)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:954 | [#5455](https://github.com/earendil-works/pi/issues/5455)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:955 | [#5415](https://github.com/earendil-works/pi/issues/5415)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:961 | [#5499](https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:964 | [#5188](https://github.com/earendil-works/pi/issues/5188)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:965 | [#5401](https://github.com/earendil-works/pi/issues/5401)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:966 | [#5456](https://github.com/earendil-works/pi/issues/5456)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:967 | [#5454](https://github.com/earendil-works/pi/issues/5454)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:968 | [#5432](https://github.com/earendil-works/pi/issues/5432)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:969 | [#5347](https://github.com/earendil-works/pi/issues/5347)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:970 | [#5359](https://github.com/earendil-works/pi/issues/5359)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:971 | [#5371](https://github.com/earendil-works/pi/pull/5371 | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:984 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:984 | [#5313](https://github.com/earendil-works/pi/issues/5313)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:987 | [#5306](https://github.com/earendil-works/pi/pull/5306 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:994 | [#5226](https://github.com/earendil-works/pi/issues/5226)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:995 | [#5294](https://github.com/earendil-works/pi/issues/5294)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:996 | [#4975](https://github.com/earendil-works/pi/issues/4975)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:997 | [#5251](https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:998 | [#5243](https://github.com/earendil-works/pi/issues/5243)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:999 | [#5309](https://github.com/earendil-works/pi/issues/5309)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1000 | [#5221](https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1001 | [#5235](https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1002 | [#5218](https://github.com/earendil-works/pi/issues/5218)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1003 | [#5231](https://github.com/earendil-works/pi/issues/5231)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1004 | [#5264](https://github.com/earendil-works/pi/pull/5264 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1005 | [#5299](https://github.com/earendil-works/pi/issues/5299)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1017 | [#5167](https://github.com/earendil-works/pi-mono/pull/5167 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1018 | [#5202](https://github.com/earendil-works/pi-mono/pull/5202 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1019 | [#5153](https://github.com/earendil-works/pi-mono/issues/5153)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1020 | [#5176](https://github.com/earendil-works/pi-mono/pull/5176 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1021 | [#5189](https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1022 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1022 | [#5178](https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1026 | [#5200](https://github.com/earendil-works/pi-mono/issues/5200)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1027 | [#5201](https://github.com/earendil-works/pi-mono/issues/5201)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1028 | [#5184](https://github.com/earendil-works/pi-mono/issues/5184)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1029 | [#5195](https://github.com/earendil-works/pi-mono/pull/5195 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1030 | [#5159](https://github.com/earendil-works/pi-mono/issues/5159)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1031 | [#5169](https://github.com/earendil-works/pi-mono/issues/5169)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1034 | [#5189](https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1035 | [#5185](https://github.com/earendil-works/pi-mono/issues/5185)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1048 | [#5109](https://github.com/earendil-works/pi/issues/5109)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1049 | [#4911](https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1050 | [#5107](https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1055 | [#4829](https://github.com/earendil-works/pi/issues/4829)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1056 | [#4801](https://github.com/earendil-works/pi/issues/4801)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1058 | [#5080](https://github.com/earendil-works/pi/issues/5080)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1059 | [#5091](https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1060 | [#5028](https://github.com/earendil-works/pi/issues/5028)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1061 | [#5095](https://github.com/earendil-works/pi/issues/5095)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1062 | [#5029](https://github.com/earendil-works/pi/pull/5029 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1063 | [#4879](https://github.com/earendil-works/pi/issues/4879)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1064 | [#5148](https://github.com/earendil-works/pi/issues/5148)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1065 | [#4464](https://github.com/earendil-works/pi/issues/4464)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1067 | [#5078](https://github.com/earendil-works/pi/issues/5078)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1068 | [#5075](https://github.com/earendil-works/pi/issues/5075)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1069 | [#5115](https://github.com/earendil-works/pi/pull/5115 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1070 | [#5107](https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1071 | [#5132](https://github.com/earendil-works/pi/issues/5132)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1072 | [#5092](https://github.com/earendil-works/pi/issues/5092)). | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1085 | [#4874](https://github.com/earendil-works/pi/issues/4874)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1086 | [#5039](https://github.com/earendil-works/pi/issues/5039)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1090 | [#5013](https://github.com/earendil-works/pi/issues/5013)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1091 | [#4929](https://github.com/earendil-works/pi/issues/4929)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1092 | [#4983](https://github.com/earendil-works/pi/issues/4983)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1093 | [#4945](https://github.com/earendil-works/pi/issues/4945)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1094 | [#4764](https://github.com/earendil-works/pi/issues/4764)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1095 | [#4907](https://github.com/earendil-works/pi/issues/4907)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1096 | [#4897](https://github.com/earendil-works/pi/issues/4897)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1097 | [#4967](https://github.com/earendil-works/pi/issues/4967)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1098 | [#4969](https://github.com/earendil-works/pi/issues/4969)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1099 | [#4943](https://github.com/earendil-works/pi/issues/4943)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1100 | [#4991](https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1102 | [#4923](https://github.com/earendil-works/pi/issues/4923)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1103 | [#5037](https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1104 | [#5022](https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1104 | [#5067](https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1104 | [#5068](https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1105 | [#5041](https://github.com/earendil-works/pi/issues/5041)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1118 | [#4797](https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1119 | [#4821](https://github.com/earendil-works/pi/issues/4821)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1124 | [#4916](https://github.com/earendil-works/pi/issues/4916)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1125 | [#4480](https://github.com/earendil-works/pi/issues/4480)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1126 | [#4868](https://github.com/earendil-works/pi/issues/4868)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1130 | [#4869](https://github.com/earendil-works/pi/issues/4869)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1131 | [#4873](https://github.com/earendil-works/pi-mono/pull/4873 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1132 | [#4898](https://github.com/earendil-works/pi-mono/pull/4898 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1133 | [#4830](https://github.com/earendil-works/pi-mono/pull/4830 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1134 | [#4847](https://github.com/earendil-works/pi/issues/4847)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1135 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1135 | [#4842](https://github.com/earendil-works/pi/issues/4842)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1136 | [#4848](https://github.com/earendil-works/pi/issues/4848)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1137 | [#4832](https://github.com/earendil-works/pi/issues/4832)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1138 | [#4788](https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1139 | [#4870](https://github.com/earendil-works/pi/issues/4870)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1140 | [#4876](https://github.com/earendil-works/pi/issues/4876)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1141 | [#4819](https://github.com/earendil-works/pi/issues/4819)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1142 | [#4818](https://github.com/earendil-works/pi/issues/4818)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1143 | [#4878](https://github.com/earendil-works/pi/issues/4878)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1144 | [#4307](https://github.com/earendil-works/pi/issues/4307)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1145 | [#4756](https://github.com/earendil-works/pi-mono/pull/4756 | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1155 | [#4724](https://github.com/earendil-works/pi-mono/pull/4724 | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1156 | [#4775](https://github.com/earendil-works/pi-mono/pull/4775 | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1168 | [#4752](https://github.com/earendil-works/pi/issues/4752)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1169 | [#4276](https://github.com/earendil-works/pi/issues/4276)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1171 | [#4799](https://github.com/earendil-works/pi-mono/pull/4799 | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1172 | [#4710](https://github.com/earendil-works/pi/issues/4710)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1173 | [#4699](https://github.com/earendil-works/pi/issues/4699)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1174 | [#4763](https://github.com/earendil-works/pi/issues/4763)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1175 | [#4759](https://github.com/earendil-works/pi-mono/pull/4759 | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1176 | [#4709](https://github.com/earendil-works/pi-mono/pull/4709 | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1177 | [#4664](https://github.com/earendil-works/pi-mono/pull/4664 | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1180 | @earendil-works/pi-tui | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1181 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1181 | [#4675](https://github.com/earendil-works/pi/issues/4675)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1182 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1182 | [#4720](https://github.com/earendil-works/pi/issues/4720)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1183 | [#4793](https://github.com/earendil-works/pi/issues/4793)). | Immutable changelog | Released history: [0.75.4] - 2026-05-20 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1189 | [#4681](https://github.com/earendil-works/pi/issues/4681)). | Immutable changelog | Released history: [0.75.3] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1195 | [#4661](https://github.com/earendil-works/pi-mono/pull/4661 | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1196 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1196 | [#4678](https://github.com/earendil-works/pi/issues/4678)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1197 | [#4612](https://github.com/earendil-works/pi/issues/4612)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1198 | [#4157](https://github.com/earendil-works/pi/issues/4157)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1199 | [#4647](https://github.com/earendil-works/pi/issues/4647)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1200 | [#4157](https://github.com/earendil-works/pi/issues/4157)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1201 | [#4665](https://github.com/earendil-works/pi/issues/4665)). | Immutable changelog | Released history: [0.75.2] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1207 | [#4243](https://github.com/earendil-works/pi-mono/pull/4243 | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1208 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1208 | [#4342](https://github.com/earendil-works/pi/issues/4342)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1209 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1209 | [#4223](https://github.com/earendil-works/pi/issues/4223)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1210 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1210 | [#4232](https://github.com/earendil-works/pi/issues/4232)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1211 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1211 | [#4251](https://github.com/earendil-works/pi/issues/4251)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1212 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1212 | [#4505](https://github.com/earendil-works/pi/issues/4505)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1213 | [#4650](https://github.com/earendil-works/pi/issues/4650 | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1213 | [#4652](https://github.com/earendil-works/pi/issues/4652 | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1213 | [#4653](https://github.com/earendil-works/pi/issues/4653)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1214 | [#4623](https://github.com/earendil-works/pi/issues/4623)). | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1218 | @earendil-works/pi-ai`. | Immutable changelog | Released history: [0.75.1] - 2026-05-18 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1228 | [#4484](https://github.com/earendil-works/pi/issues/4484)). | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1229 | [#4541](https://github.com/earendil-works/pi-mono/pull/4541 | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1230 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1230 | [#4603](https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1231 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1231 | [#4622](https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1232 | [#4587](https://github.com/earendil-works/pi/issues/4587)). | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1233 | [#4619](https://github.com/earendil-works/pi/issues/4619)). | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1234 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1234 | [#4614](https://github.com/earendil-works/pi/issues/4614)). | Immutable changelog | Released history: [0.75.0] - 2026-05-17 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1240 | @earendil-works/pi-ai`. | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1243 | @earendil-works/pi-tui`. | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1247 | @earendil-works/pi-ai | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1247 | [#3887](https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1248 | [#3624](https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1249 | [#4458](https://github.com/earendil-works/pi/pull/4458 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1253 | [#4519](https://github.com/earendil-works/pi/issues/4519)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1255 | [#4492](https://github.com/earendil-works/pi/issues/4492)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1256 | [#4508](https://github.com/earendil-works/pi/issues/4508)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1258 | [#4559](https://github.com/earendil-works/pi/issues/4559)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1259 | [#4534](https://github.com/earendil-works/pi/issues/4534)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1260 | [#4553](https://github.com/earendil-works/pi/issues/4553)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1261 | [#4583](https://github.com/earendil-works/pi/issues/4583)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1262 | [#4510](https://github.com/earendil-works/pi/issues/4510)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1264 | [#4503](https://github.com/earendil-works/pi/issues/4503)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1265 | [#4429](https://github.com/earendil-works/pi/issues/4429)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1266 | [#4433](https://github.com/earendil-works/pi/issues/4433)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1268 | [#4426](https://github.com/earendil-works/pi-mono/pull/4426 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1271 | @earendil-works/pi-ai`. | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1272 | @earendil-works/pi-tui`. | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1273 | [#4333](https://github.com/earendil-works/pi/issues/4333)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1274 | [#4289](https://github.com/earendil-works/pi/issues/4289)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1275 | [#4280](https://github.com/earendil-works/pi/issues/4280)). | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1281 | earendil-works/pi-mono | Immutable changelog | Released history: [0.74.0] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1281 | @earendil-works/* | Immutable changelog | Released history: [0.74.0] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1287 | @earendil-works/pi-coding-agent`. | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1293 | [#4190](https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1298 | [#4244](https://github.com/earendil-works/pi-mono/pull/4244 | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1299 | [#4162](https://github.com/earendil-works/pi-mono/pull/4162 | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1306 | [#4234](https://github.com/earendil-works/pi-mono/pull/4234 | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1309 | [#4184](https://github.com/earendil-works/pi-mono/issues/4184)). | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1310 | [#4218](https://github.com/earendil-works/pi-mono/issues/4218)). | Immutable changelog | Released history: [0.73.1] - 2026-05-07 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1903 | Earendil | Immutable changelog | Released history: [0.66.1] - 2026-04-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1909 | Earendil | Immutable changelog | Released history: [0.66.0] - 2026-04-08 | Never rewrite released records | +| packages/coding-agent/CHANGELOG.md:1916 | Earendil | Immutable changelog | Released history: [0.66.0] - 2026-04-08 | Never rewrite released records | +| packages/coding-agent/docs/containerization.md:21 | [Gondolin](https://github.com/earendil-works/gondolin | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/docs/containerization.md:43 | @earendil-works/gondolin | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/index.ts:18 | @earendil-works/gondolin | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/index.ts:45 | @earendil-works/gondolin | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:11 | @earendil-works/gondolin": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:23 | node_modules/@earendil-works/gondolin": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:25 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:41 | @earendil-works/gondolin-krun-runner-darwin-arm64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:42 | @earendil-works/gondolin-krun-runner-linux-x64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:45 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:47 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:61 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package-lock.json:63 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/examples/extensions/gondolin/package.json:17 | @earendil-works/gondolin": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | +| packages/coding-agent/src/core/tools/find.ts:240 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/src/migrations.ts:81 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/src/utils/changelog.ts:14 | /^https:\/\/github\.com\/(?:badlogic|earendil-works)\/pi-mono(?=\/|$)/ | Supported migration behavior | Matches old repository links for canonical display normalization | Maintainers remove only when legacy-link normalization is retired | +| packages/coding-agent/src/utils/child-process.ts:44 | earendil-works/pi#5303). | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/changelog.test.ts:37 | [#5167](https://github.com/earendil-works/pi-mono/pull/5167 | Supported migration behavior | Matches old repository links for canonical display normalization | Maintainers remove only when legacy-link normalization is retired | +| packages/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts:8 | https://github.com/earendil-works/pi-mono/issues/2791 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts:8 | https://github.com/earendil-works/pi-mono/issues/3302 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts:8 | https://github.com/earendil-works/pi-mono/issues/3303 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/5080-signal-shutdown-extension-cleanup.test.ts:10 | https://github.com/earendil-works/pi/issues/5080 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/5303-bash-output-truncation.test.ts:8 | https://github.com/earendil-works/pi/issues/5303 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/5724-sigterm-signal-exit.test.ts:4 | https://github.com/earendil-works/pi/issues/5724 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/5868-rpc-unknown-command-id.test.ts:6 | https://github.com/earendil-works/pi/issues/5868 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/coding-agent/test/suite/regressions/6104-find-root-relativization.test.ts:6 | https://github.com/earendil-works/pi/issues/6104 | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/protocol/CHANGELOG.md:10 | [#7708](https://github.com/earendil-works/pi/pull/7708)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/protocol/CHANGELOG.md:15 | [#7644](https://github.com/earendil-works/pi/pull/7644)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/server/CHANGELOG.md:10 | [#7708](https://github.com/earendil-works/pi/pull/7708)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/server/CHANGELOG.md:15 | [#7644](https://github.com/earendil-works/pi/pull/7644)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/server/CHANGELOG.md:29 | [#6898](https://github.com/earendil-works/pi/pull/6898 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/session-backends/sqlite-node/CHANGELOG.md:13 | @earendil-works/pi-storage-sqlite-node | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/session-backends/sqlite-node/CHANGELOG.md:13 | @earendil-works/pi-session-backend-sqlite-node`. | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/session-backends/sqlite-node/CHANGELOG.md:22 | [#7655](https://github.com/earendil-works/pi/pull/7655)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/session-backends/sqlite-node/CHANGELOG.md:36 | [#6594](https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/tui/CHANGELOG.md:7 | [#7735](https://github.com/earendil-works/pi/issues/7735)). | Upstream history | Inherited upstream release record and provenance | Retain accurate historical facts | +| packages/tui/CHANGELOG.md:8 | [#7725](https://github.com/earendil-works/pi/issues/7725)). | Upstream history | Inherited upstream release record and provenance | Retain accurate historical facts | +| packages/tui/CHANGELOG.md:25 | [#7304](https://github.com/earendil-works/pi/issues/7304)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:31 | [#7361](https://github.com/earendil-works/pi/pull/7361)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:43 | [#6987](https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:48 | [#7574](https://github.com/earendil-works/pi/issues/7574)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:51 | [#7550](https://github.com/earendil-works/pi/pull/7550)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:52 | [#7581](https://github.com/earendil-works/pi/pull/7581)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:53 | [#7612](https://github.com/earendil-works/pi/pull/7612)). | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:54 | [#7657](https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Released history: [0.84.0] - 2026-08-06 | Never rewrite released records | +| packages/tui/CHANGELOG.md:60 | [#7262](https://github.com/earendil-works/pi/pull/7262)). | Immutable changelog | Released history: [0.83.0] - 2026-07-29 | Never rewrite released records | +| packages/tui/CHANGELOG.md:68 | [#6958](https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/tui/CHANGELOG.md:69 | [#7015](https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Released history: [0.82.0] - 2026-07-24 | Never rewrite released records | +| packages/tui/CHANGELOG.md:77 | [#6790](https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/tui/CHANGELOG.md:78 | [#6764](https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/tui/CHANGELOG.md:79 | [#6844](https://github.com/earendil-works/pi/issues/6844)). | Immutable changelog | Released history: [0.81.0] - 2026-07-21 | Never rewrite released records | +| packages/tui/CHANGELOG.md:89 | [#6697](https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Released history: [0.80.8] - 2026-07-16 | Never rewrite released records | +| packages/tui/CHANGELOG.md:95 | [#6523](https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Released history: [0.80.7] - 2026-07-14 | Never rewrite released records | +| packages/tui/CHANGELOG.md:105 | [#6397](https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Released history: [0.80.4] - 2026-07-09 | Never rewrite released records | +| packages/tui/CHANGELOG.md:111 | [#6105](https://github.com/earendil-works/pi/issues/6105)). | Immutable changelog | Released history: [0.80.3] - 2026-06-30 | Never rewrite released records | +| packages/tui/CHANGELOG.md:129 | [#5846](https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Released history: [0.79.9] - 2026-06-20 | Never rewrite released records | +| packages/tui/CHANGELOG.md:137 | [#5874](https://github.com/earendil-works/pi/pull/5874)). | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/tui/CHANGELOG.md:138 | [#5841](https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Released history: [0.79.7] - 2026-06-18 | Never rewrite released records | +| packages/tui/CHANGELOG.md:151 | [#5789](https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Released history: [0.79.5] - 2026-06-16 | Never rewrite released records | +| packages/tui/CHANGELOG.md:157 | [#5385](https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/tui/CHANGELOG.md:161 | [#5297](https://github.com/earendil-works/pi/issues/5297)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/tui/CHANGELOG.md:162 | [#5618](https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/tui/CHANGELOG.md:162 | [#4415](https://github.com/earendil-works/pi/issues/4415)). | Immutable changelog | Released history: [0.79.4] - 2026-06-15 | Never rewrite released records | +| packages/tui/CHANGELOG.md:170 | [#5657](https://github.com/earendil-works/pi/issues/5657)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/tui/CHANGELOG.md:172 | [#5618](https://github.com/earendil-works/pi/issues/5618)). | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/tui/CHANGELOG.md:173 | [#5585](https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/tui/CHANGELOG.md:174 | [#5562](https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Released history: [0.79.2] - 2026-06-12 | Never rewrite released records | +| packages/tui/CHANGELOG.md:180 | [#4703](https://github.com/earendil-works/pi/issues/4703)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/tui/CHANGELOG.md:184 | [#5283](https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/tui/CHANGELOG.md:185 | [#5494](https://github.com/earendil-works/pi/issues/5494)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/tui/CHANGELOG.md:186 | [#5495](https://github.com/earendil-works/pi/issues/5495)). | Immutable changelog | Released history: [0.79.1] - 2026-06-09 | Never rewrite released records | +| packages/tui/CHANGELOG.md:192 | [#5454](https://github.com/earendil-works/pi/issues/5454)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/tui/CHANGELOG.md:193 | [#5188](https://github.com/earendil-works/pi/issues/5188)). | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/tui/CHANGELOG.md:195 | [#5499](https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Released history: [0.79.0] - 2026-06-08 | Never rewrite released records | +| packages/tui/CHANGELOG.md:201 | [#5235](https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/tui/CHANGELOG.md:202 | [#5218](https://github.com/earendil-works/pi/issues/5218)). | Immutable changelog | Released history: [0.78.1] - 2026-06-04 | Never rewrite released records | +| packages/tui/CHANGELOG.md:208 | [#5185](https://github.com/earendil-works/pi-mono/issues/5185)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/tui/CHANGELOG.md:209 | [#5200](https://github.com/earendil-works/pi-mono/issues/5200)). | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/tui/CHANGELOG.md:210 | [#5189](https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Released history: [0.78.0] - 2026-05-29 | Never rewrite released records | +| packages/tui/CHANGELOG.md:216 | [#5091](https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Released history: [0.77.0] - 2026-05-28 | Never rewrite released records | +| packages/tui/CHANGELOG.md:222 | [#5013](https://github.com/earendil-works/pi/issues/5013)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/tui/CHANGELOG.md:227 | [#4923](https://github.com/earendil-works/pi/issues/4923)). | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/tui/CHANGELOG.md:228 | [#5037](https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/tui/CHANGELOG.md:229 | [#5022](https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/tui/CHANGELOG.md:229 | [#5067](https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/tui/CHANGELOG.md:229 | [#5068](https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Released history: [0.76.0] - 2026-05-27 | Never rewrite released records | +| packages/tui/CHANGELOG.md:235 | [#4480](https://github.com/earendil-works/pi/issues/4480)). | Immutable changelog | Released history: [0.75.5] - 2026-05-23 | Never rewrite released records | +| packages/tui/CHANGELOG.md:264 | [#4327](https://github.com/earendil-works/pi-mono/pull/4327 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/tui/CHANGELOG.md:268 | [#4379](https://github.com/earendil-works/pi-mono/pull/4379 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/tui/CHANGELOG.md:269 | [#4463](https://github.com/earendil-works/pi-mono/pull/4463 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/tui/CHANGELOG.md:270 | [#4461](https://github.com/earendil-works/pi-mono/pull/4461 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/tui/CHANGELOG.md:271 | [#4482](https://github.com/earendil-works/pi-mono/pull/4482 | Immutable changelog | Released history: [0.74.1] - 2026-05-16 | Never rewrite released records | +| packages/tui/src/components/markdown.ts:162 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| packages/tui/test/editor.test.ts:2310 | earendil-works/pi#5496: | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| scripts/release-notes.mjs:12 | /^https:\/\/github\.com\/(?:badlogic|earendil-works)\/pi-mono(?=\/|$)/ | Supported migration behavior | Matches old repository links for canonical display normalization | Maintainers remove only when legacy-link normalization is retired | + +## Unresolved active occurrences + +| Exact path and line | Exact string | Classification | Required action | Retirement condition | +|---|---|---|---|---| +| .github/workflows/issue-analysis.yml:17 | EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:18 | earendil-works | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:19 | earendil-works/staff`. | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:78 | secrets.EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:176 | core.setFailed('EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:182 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/${encodeURIComponent(username)} | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:194 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:202 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:210 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:213 | console.log(`earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| .github/workflows/issue-analysis.yml:217 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| SECURITY.md:29 | security@earendil.com | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| SECURITY.md:86 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| SECURITY.md:87 | Earendil-operated | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts:26 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts:30 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/src/modes/interactive/interactive-mode.ts:152 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/src/modes/interactive/interactive-mode.ts:152 | ./components/earendil-announcement.ts | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/src/modes/interactive/interactive-mode.ts:7380 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/test/secondary-dialogs.test.ts:5 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/test/secondary-dialogs.test.ts:5 | ../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/test/secondary-dialogs.test.ts:118 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/test/secondary-dialogs.test.ts:119 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | +| packages/coding-agent/test/secondary-dialogs.test.ts:124 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | + +## Artifact verification + +All eleven local npm tarballs were scanned for stale active product package names, excluding historical changelogs; no matches were found. +Source archive, generated declarations, and the macOS standalone archive passed active-package identity scans. +The exact residual records below distinguish retained history and dependencies from unresolved active branding. +Docker image inspection is unavailable because no local Docker daemon is running. + +## Exact artifact occurrences + +Artifacts were built from the source revision above. +Byte offsets identify exact occurrences without relying on generated line wrapping. +Rows marked unresolved are blocking findings, not allowlist exceptions. + +| Artifact, member, and byte offset | Exact string | Classification | Rationale and retirement condition | +|---|---|---|---| +| diffexai-diffex-0.2.0.tgz!package/dist/utils/changelog.js@byte-287 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.js@byte-879 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js@byte-744 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js@byte-911 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js@byte-1438 | earendil-announcement.js.map | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/core/tools/find.js@byte-9344 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js@byte-4424 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js@byte-4462 | ./components/earendil-announcement.js | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js@byte-287670 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/migrations.js@byte-2912 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-658 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-1138 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-1205 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-1276 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-1383 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-1813 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-1917 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package.json@byte-306 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/dist/utils/changelog.d.ts.map@byte-1529 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffexai-diffex-0.2.0.tgz!package/dist/utils/changelog.js.map@byte-9908 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.d.ts.map@byte-2459 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.js.map@byte-5033 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-21 | earendil-announcement.d.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-77 | ../../../../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-1080 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-1245 | Earendil\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-21 | earendil-announcement.js | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-75 | ../../../../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-2483 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-2648 | Earendil\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/core/tools/find.d.ts.map@byte-11427 | https://github.com/earendil-works/pi/issues/5960\n\t\t\t\t\t\tlet | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/core/tools/find.js.map@byte-22811 | https://github.com/earendil-works/pi/issues/5960\n\t\t\t\t\t\tlet | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.d.ts.map@byte-16413 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.d.ts.map@byte-16452 | ./components/earendil-announcement.ts\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.d.ts.map@byte-293908 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js.map@byte-254972 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js.map@byte-255011 | ./components/earendil-announcement.ts\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js.map@byte-532467 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/migrations.d.ts.map@byte-3321 | https://github.com/earendil-works/pi-mono/issues/320\n | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/migrations.js.map@byte-11595 | https://github.com/earendil-works/pi-mono/issues/320\n | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-1659 | https://github.com/earendil-works/pi/issues/7128 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-2379 | https://github.com/earendil-works/pi/issues/7731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-4189 | https://github.com/earendil-works/pi/issues/7290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-4626 | https://github.com/earendil-works/pi/issues/7030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-8452 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-8808 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-9120 | @earendil-works/pi-coding-agent/client | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-9304 | https://github.com/earendil-works/pi/pull/7344 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-9361 | https://github.com/earendil-works/pi/pull/7348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-9418 | https://github.com/earendil-works/pi/pull/7371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-9475 | https://github.com/earendil-works/pi/pull/7409 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-9891 | https://github.com/earendil-works/pi/pull/7231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-10087 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-10937 | https://github.com/earendil-works/pi/pull/7624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-11414 | https://github.com/earendil-works/pi/pull/7681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-11669 | https://github.com/earendil-works/pi/pull/7493 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-12209 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-12449 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-12985 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-13459 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-13784 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-13978 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi/pull/7448 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-14245 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-14924 | https://github.com/earendil-works/pi/issues/7684 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-15238 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-15496 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-15753 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-16117 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-16291 | https://github.com/earendil-works/pi/issues/6817 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-16615 | https://github.com/earendil-works/pi/issues/7064 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-16674 | https://github.com/earendil-works/pi/issues/7547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-16840 | https://github.com/earendil-works/pi/issues/7572 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-16987 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-17313 | https://github.com/earendil-works/pi/issues/7327 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-17515 | https://github.com/earendil-works/pi/pull/7390 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-18264 | https://github.com/earendil-works/pi/issues/7333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-18405 | https://github.com/earendil-works/pi/issues/7187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-18709 | https://github.com/earendil-works/pi/issues/7292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-18966 | https://github.com/earendil-works/pi/pull/7325 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-19190 | https://github.com/earendil-works/pi/issues/7319 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-19437 | https://github.com/earendil-works/pi/issues/7316 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-19593 | https://github.com/earendil-works/pi/issues/7301 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-19652 | https://github.com/earendil-works/pi/pull/7421 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-20013 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-20072 | https://github.com/earendil-works/pi/issues/7113 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-20131 | https://github.com/earendil-works/pi/issues/7418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-20327 | https://github.com/earendil-works/pi/issues/7153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-20477 | https://github.com/earendil-works/pi/issues/7443 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-21395 | https://github.com/earendil-works/pi/issues/6768 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-21646 | https://github.com/earendil-works/pi/issues/7579 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-21865 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-22003 | https://github.com/earendil-works/pi/pull/7656 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-22205 | https://github.com/earendil-works/pi/pull/7387 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-22369 | https://github.com/earendil-works/pi/pull/7435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-22626 | https://github.com/earendil-works/pi/pull/7330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-22809 | https://github.com/earendil-works/pi/pull/7552 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-22972 | https://github.com/earendil-works/pi/pull/7370 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-23194 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-23419 | https://github.com/earendil-works/pi/pull/7570 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-23656 | https://github.com/earendil-works/pi/pull/7569 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-23870 | https://github.com/earendil-works/pi/pull/7632 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-24254 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-24469 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-24685 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-24917 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-25083 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-25302 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-25495 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-25690 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-25880 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-26158 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-26300 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-26463 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-26595 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-26938 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-26997 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-28969 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-29290 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-29537 | https://github.com/earendil-works/pi/pull/7191 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-29636 | https://github.com/earendil-works/pi/pull/7215 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-29948 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-30257 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-30478 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-30741 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-31024 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-31159 | https://github.com/earendil-works/pi/issues/7180 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-31404 | https://github.com/earendil-works/pi/issues/7096 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-31614 | https://github.com/earendil-works/pi/pull/7221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-31864 | https://github.com/earendil-works/pi/pull/7258 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-32179 | https://github.com/earendil-works/pi/pull/7022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-32436 | https://github.com/earendil-works/pi/pull/7210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-32649 | https://github.com/earendil-works/pi/pull/7211 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-32899 | https://github.com/earendil-works/pi/pull/7214 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-33118 | https://github.com/earendil-works/pi/issues/6968 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-33278 | https://github.com/earendil-works/pi/pull/7103 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-33477 | https://github.com/earendil-works/pi/pull/7110 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-33718 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-33777 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-33955 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-34218 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-34507 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-34705 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-35689 | https://github.com/earendil-works/pi/pull/7045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-35950 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-36182 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-36279 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-37019 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-37204 | https://github.com/earendil-works/pi/issues/6949 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-37263 | https://github.com/earendil-works/pi/pull/7032 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-37521 | https://github.com/earendil-works/pi/pull/7106 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-37790 | https://github.com/earendil-works/pi/pull/7072 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-39369 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-39616 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-40138 | https://github.com/earendil-works/pi/pull/6971 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-40385 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-40631 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-40895 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-41152 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-41372 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-41579 | https://github.com/earendil-works/pi/pull/6903 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-41801 | https://github.com/earendil-works/pi/pull/6964 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-42031 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-42200 | https://github.com/earendil-works/pi/issues/6977 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-42363 | https://github.com/earendil-works/pi/issues/6210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-42535 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-42766 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-42943 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-43173 | https://github.com/earendil-works/pi/pull/7034 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-43487 | https://github.com/earendil-works/pi/issues/7005 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-43626 | https://github.com/earendil-works/pi/pull/7009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-43824 | https://github.com/earendil-works/pi/issues/6999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-44755 | https://github.com/earendil-works/pi/pull/6913 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-45079 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-45388 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-46598 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-46815 | https://github.com/earendil-works/pi/pull/6865 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-47014 | https://github.com/earendil-works/pi/pull/6772 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-47604 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-47782 | https://github.com/earendil-works/pi/pull/6896 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-48108 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-48357 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-48765 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-48992 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-49198 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-49458 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-49597 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-49808 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-50004 | https://github.com/earendil-works/pi/pull/6730 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-50185 | https://github.com/earendil-works/pi/pull/6731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-50638 | https://github.com/earendil-works/pi/issues/6793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-50796 | https://github.com/earendil-works/pi/issues/6695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-50956 | https://github.com/earendil-works/pi/issues/6735 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-51221 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-51992 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-52129 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-53215 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-53662 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-56629 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-57771 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-57912 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-58079 | https://github.com/earendil-works/pi-mono/issues/6629 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-58581 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-59696 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-59877 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-60191 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-60400 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-60653 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-61116 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-61377 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-61592 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-61798 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-62006 | https://github.com/earendil-works/pi-mono/pull/6595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-62242 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-62439 | https://github.com/earendil-works/pi-mono/pull/6604 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-62676 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-63127 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-63344 | https://github.com/earendil-works/pi/issues/6621 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-64433 | https://github.com/earendil-works/pi/pull/6470 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-64691 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-65355 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-66839 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-67138 | https://github.com/earendil-works/pi/issues/6201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-67309 | https://github.com/earendil-works/pi/issues/6363 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-67466 | https://github.com/earendil-works/pi/pull/6350 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-67640 | https://github.com/earendil-works/pi/pull/6267 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-68073 | https://github.com/earendil-works/pi/pull/6309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-68232 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-68360 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-68731 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-68912 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-69194 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-69424 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-69623 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-69812 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-69943 | https://github.com/earendil-works/pi/pull/6430 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-70108 | https://github.com/earendil-works/pi/pull/6418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-70362 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-70532 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-70800 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-70981 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-71360 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-71513 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-71991 | https://github.com/earendil-works/pi/pull/6279 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-72235 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-72425 | https://github.com/earendil-works/pi/issues/6231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-72627 | https://github.com/earendil-works/pi/issues/6189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-72819 | https://github.com/earendil-works/pi/issues/6223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-73006 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-73152 | https://github.com/earendil-works/pi/issues/6326 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-73499 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-73681 | https://github.com/earendil-works/pi/issues/6278 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-73802 | https://github.com/earendil-works/pi/issues/6354 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-74035 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-74184 | https://github.com/earendil-works/pi/issues/6367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-74390 | https://github.com/earendil-works/pi/issues/6369 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-74564 | https://github.com/earendil-works/pi/issues/6407 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-74711 | https://github.com/earendil-works/pi/issues/6395 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-76320 | https://github.com/earendil-works/pi/pull/6078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-76557 | https://github.com/earendil-works/pi/pull/6175 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-76742 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-76947 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-77162 | https://github.com/earendil-works/pi/issues/6122 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-77323 | https://github.com/earendil-works/pi/issues/6168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-77644 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-77950 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-78108 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-78361 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-78538 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-78790 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-78940 | https://github.com/earendil-works/pi/pull/6074 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-79121 | https://github.com/earendil-works/pi/pull/6048 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-79383 | https://github.com/earendil-works/pi/pull/6030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-79474 | https://github.com/earendil-works/pi/pull/6063 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-79724 | https://github.com/earendil-works/pi/issues/6162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-79889 | https://github.com/earendil-works/pi/issues/6133 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-80209 | https://github.com/earendil-works/pi/pull/6026 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-80383 | https://github.com/earendil-works/pi/issues/6002 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-80556 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-80713 | https://github.com/earendil-works/pi/issues/4290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-80894 | https://github.com/earendil-works/pi/issues/6070 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-81069 | https://github.com/earendil-works/pi/issues/6047 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-81226 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-82054 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-82247 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-82306 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-82488 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-83149 | https://github.com/earendil-works/pi/issues/5965 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-83363 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-83406 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-83712 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-84019 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-84229 | https://github.com/earendil-works/pi/pull/5784 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-84633 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-84877 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-85415 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-85697 | https://github.com/earendil-works/pi/issues/5953 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-85803 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-85836 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-86883 | https://github.com/earendil-works/pi/pull/5962 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-87130 | https://github.com/earendil-works/pi/issues/5960 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-87268 | https://github.com/earendil-works/pi/issues/5959 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-87462 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-87597 | https://github.com/earendil-works/pi/issues/5957 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-87838 | https://github.com/earendil-works/pi/issues/5943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-88077 | https://github.com/earendil-works/pi/issues/5940 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-89349 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-89554 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-89755 | https://github.com/earendil-works/pi/issues/5905 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-89901 | https://github.com/earendil-works/pi/issues/5909 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-90080 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-90292 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-90511 | https://github.com/earendil-works/pi/issues/5899 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-90696 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-90854 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-91027 | https://github.com/earendil-works/pi/issues/5892 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-91189 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-91222 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-92236 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-92269 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-92387 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-92633 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-92782 | https://github.com/earendil-works/pi/issues/5877 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-92912 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-93241 | https://github.com/earendil-works/pi/issues/4811 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-93404 | https://github.com/earendil-works/pi/issues/5720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-94390 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-94570 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-94805 | https://github.com/earendil-works/pi/pull/5869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-95058 | https://github.com/earendil-works/pi/pull/5756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-95670 | https://github.com/earendil-works/pi/issues/5868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-95986 | https://github.com/earendil-works/pi/issues/5830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-97194 | https://github.com/earendil-works/pi/pull/5798 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-97481 | https://github.com/earendil-works/pi/issues/5790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-97697 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-97999 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-98173 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-98427 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-98650 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-98881 | https://github.com/earendil-works/pi/issues/5805 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-99179 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-99383 | https://github.com/earendil-works/pi/issues/5747 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-99594 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-100184 | https://github.com/earendil-works/pi/issues/5739 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-100320 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-100586 | https://github.com/earendil-works/pi/pull/5753 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-100798 | https://github.com/earendil-works/pi/issues/5055 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-101075 | https://github.com/earendil-works/pi/issues/5724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-101280 | https://github.com/earendil-works/pi/issues/5729 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-101463 | https://github.com/earendil-works/pi/pull/5708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-101712 | https://github.com/earendil-works/pi/issues/5687 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-101891 | https://github.com/earendil-works/pi/issues/5689 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-102118 | https://github.com/earendil-works/pi/issues/5695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-102331 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-102561 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-102771 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-102967 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-103217 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-103276 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-103545 | https://github.com/earendil-works/pi/issues/5661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-104469 | https://github.com/earendil-works/pi/pull/5587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-104697 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-104984 | https://github.com/earendil-works/pi/issues/5619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-105146 | https://github.com/earendil-works/pi/pull/5627 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-105366 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-105569 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-105739 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-106032 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-106216 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-106459 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-106623 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-106932 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-107112 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-107314 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-107545 | https://github.com/earendil-works/pi/issues/5643 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-107699 | https://github.com/earendil-works/pi/issues/5669 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-107887 | https://github.com/earendil-works/pi/issues/5596 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-108113 | https://github.com/earendil-works/pi/pull/5560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-109308 | https://github.com/earendil-works/pi/pull/5553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-109507 | https://github.com/earendil-works/pi/pull/5547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-109743 | https://github.com/earendil-works/pi/issues/5523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-110048 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-110153 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-110423 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-110620 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-110846 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-111006 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-111201 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-111352 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-111568 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-111792 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-111963 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-112170 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-112359 | https://github.com/earendil-works/pi/issues/5433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-112521 | https://github.com/earendil-works/pi/issues/5377 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-112744 | https://github.com/earendil-works/pi/issues/5418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-112923 | https://github.com/earendil-works/pi/issues/5516 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-113227 | https://github.com/earendil-works/pi/issues/5045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-113418 | https://github.com/earendil-works/pi/issues/4841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-114693 | https://github.com/earendil-works/pi/pull/5332 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-114895 | https://github.com/earendil-works/pi/issues/5455 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-115027 | https://github.com/earendil-works/pi/issues/5415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-115373 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-115813 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-115983 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-116179 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-116376 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-116562 | https://github.com/earendil-works/pi/issues/5432 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-116790 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-116928 | https://github.com/earendil-works/pi/issues/5359 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-117085 | https://github.com/earendil-works/pi/pull/5371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-117880 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-117964 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-118343 | https://github.com/earendil-works/pi/pull/5306 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-119193 | https://github.com/earendil-works/pi/issues/5226 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-119784 | https://github.com/earendil-works/pi/issues/5294 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-119988 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-120149 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-120341 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-120497 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-120660 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-120896 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-121142 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-121355 | https://github.com/earendil-works/pi/issues/5231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-121513 | https://github.com/earendil-works/pi/pull/5264 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-121713 | https://github.com/earendil-works/pi/issues/5299 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-122351 | https://github.com/earendil-works/pi-mono/pull/5167 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-122510 | https://github.com/earendil-works/pi-mono/pull/5202 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-122675 | https://github.com/earendil-works/pi-mono/issues/5153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-122805 | https://github.com/earendil-works/pi-mono/pull/5176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-122997 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-123161 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-123193 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-123417 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-123634 | https://github.com/earendil-works/pi-mono/issues/5201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-123829 | https://github.com/earendil-works/pi-mono/issues/5184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-124000 | https://github.com/earendil-works/pi-mono/pull/5195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-124215 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-124481 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-124853 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-125036 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-126033 | https://github.com/earendil-works/pi/issues/5109 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-126226 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-126471 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-126804 | https://github.com/earendil-works/pi/issues/4829 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-127005 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-127525 | https://github.com/earendil-works/pi/issues/5080 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-127725 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-127943 | https://github.com/earendil-works/pi/issues/5028 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-128277 | https://github.com/earendil-works/pi/issues/5095 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-128438 | https://github.com/earendil-works/pi/pull/5029 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-128679 | https://github.com/earendil-works/pi/issues/4879 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-128918 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-129128 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-129392 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-129539 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-129707 | https://github.com/earendil-works/pi/pull/5115 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-129929 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-130141 | https://github.com/earendil-works/pi/issues/5132 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-130338 | https://github.com/earendil-works/pi/issues/5092 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-131431 | https://github.com/earendil-works/pi/issues/4874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-131599 | https://github.com/earendil-works/pi/issues/5039 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-131761 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-131936 | https://github.com/earendil-works/pi/issues/4929 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-132098 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-132365 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-132545 | https://github.com/earendil-works/pi/issues/4764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-132732 | https://github.com/earendil-works/pi/issues/4907 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-132916 | https://github.com/earendil-works/pi/issues/4897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-133095 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-133245 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-133403 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-133633 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-133984 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-134158 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-134393 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-134497 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-134601 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-134788 | https://github.com/earendil-works/pi/issues/5041 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-135766 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-135949 | https://github.com/earendil-works/pi/issues/4821 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-136202 | https://github.com/earendil-works/pi/issues/4916 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-136431 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-136583 | https://github.com/earendil-works/pi/issues/4868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-136733 | https://github.com/earendil-works/pi/issues/4869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-136873 | https://github.com/earendil-works/pi-mono/pull/4873 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-137067 | https://github.com/earendil-works/pi-mono/pull/4898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-137253 | https://github.com/earendil-works/pi-mono/pull/4830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-137439 | https://github.com/earendil-works/pi/issues/4847 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-137633 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-137665 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-137871 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-138009 | https://github.com/earendil-works/pi/issues/4832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-138236 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-138477 | https://github.com/earendil-works/pi/issues/4870 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-138652 | https://github.com/earendil-works/pi/issues/4876 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-138801 | https://github.com/earendil-works/pi/issues/4819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-138958 | https://github.com/earendil-works/pi/issues/4818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-139128 | https://github.com/earendil-works/pi/issues/4878 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-139321 | https://github.com/earendil-works/pi/issues/4307 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-139518 | https://github.com/earendil-works/pi-mono/pull/4756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-140261 | https://github.com/earendil-works/pi-mono/pull/4724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-140445 | https://github.com/earendil-works/pi-mono/pull/4775 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-141284 | https://github.com/earendil-works/pi/issues/4752 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-141481 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-141822 | https://github.com/earendil-works/pi-mono/pull/4799 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-142092 | https://github.com/earendil-works/pi/issues/4710 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-142265 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-142414 | https://github.com/earendil-works/pi/issues/4763 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-142585 | https://github.com/earendil-works/pi-mono/pull/4759 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-142789 | https://github.com/earendil-works/pi-mono/pull/4709 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-142996 | https://github.com/earendil-works/pi-mono/pull/4664 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-143330 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-143484 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-143586 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-143687 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-143766 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-143965 | https://github.com/earendil-works/pi/issues/4793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-144201 | https://github.com/earendil-works/pi/issues/4681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-144423 | https://github.com/earendil-works/pi-mono/pull/4661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-144686 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-144718 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-144876 | https://github.com/earendil-works/pi/issues/4612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-145061 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-145239 | https://github.com/earendil-works/pi/issues/4647 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-145421 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-145587 | https://github.com/earendil-works/pi/issues/4665 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-145763 | https://github.com/earendil-works/pi-mono/pull/4243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146063 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146095 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146267 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146299 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146580 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146612 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146815 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-146847 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147068 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147100 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147304 | https://github.com/earendil-works/pi/issues/4650 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147363 | https://github.com/earendil-works/pi/issues/4652 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147422 | https://github.com/earendil-works/pi/issues/4653 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147601 | https://github.com/earendil-works/pi/issues/4623 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147738 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-147998 | https://github.com/earendil-works/pi/issues/4484 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-148215 | https://github.com/earendil-works/pi-mono/pull/4541 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-148413 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-148445 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-148621 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-148696 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-148985 | https://github.com/earendil-works/pi/issues/4587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-149211 | https://github.com/earendil-works/pi/issues/4619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-149438 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-149470 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-149726 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-150281 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-150357 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-150494 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-150716 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-150880 | https://github.com/earendil-works/pi/pull/4458 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-151133 | https://github.com/earendil-works/pi/issues/4519 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-151393 | https://github.com/earendil-works/pi/issues/4492 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-151538 | https://github.com/earendil-works/pi/issues/4508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-151811 | https://github.com/earendil-works/pi/issues/4559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-151966 | https://github.com/earendil-works/pi/issues/4534 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-152114 | https://github.com/earendil-works/pi/issues/4553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-152291 | https://github.com/earendil-works/pi/issues/4583 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-152470 | https://github.com/earendil-works/pi/issues/4510 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-152715 | https://github.com/earendil-works/pi/issues/4503 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-152855 | https://github.com/earendil-works/pi/issues/4429 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-152988 | https://github.com/earendil-works/pi/issues/4433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-153216 | https://github.com/earendil-works/pi-mono/pull/4426 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-153611 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-153813 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-153947 | https://github.com/earendil-works/pi/issues/4333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-154072 | https://github.com/earendil-works/pi/issues/4289 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-154261 | https://github.com/earendil-works/pi/issues/4280 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-154420 | earendil-works/pi-mono | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-154449 | @earendil-works/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-154685 | @earendil-works/pi-coding-agent | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-155510 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-155959 | https://github.com/earendil-works/pi-mono/pull/4244 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-156127 | https://github.com/earendil-works/pi-mono/pull/4162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-156969 | https://github.com/earendil-works/pi-mono/pull/4234 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-157415 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-157547 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-233030 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-233178 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-233958 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-0.2.0.tgz!package/docs/containerization.md@byte-1147 | https://github.com/earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.d.ts@byte-1068 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts@byte-71 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts@byte-163 | earendil-announcement.d.ts.map | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/index.ts@byte-568 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/index.ts@byte-1194 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffexai-diffex-0.2.0.tgz!package/dist/migrations.d.ts@byte-553 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/azure-openai-responses.js@byte-962 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/openai-responses-shared.js@byte-17306 | https://github.com/earendil-works/pi/issues/6409. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/openai-responses.js@byte-1050 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/azure-openai-responses.d.ts.map@byte-1944 | https://github.com/earendil-works/pi/issues/6265\nconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/azure-openai-responses.js.map@byte-10629 | https://github.com/earendil-works/pi/issues/6265\nconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/openai-responses-shared.d.ts.map@byte-21829 | https://github.com/earendil-works/pi/issues/6409.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/openai-responses-shared.js.map@byte-45356 | https://github.com/earendil-works/pi/issues/6409.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/openai-responses.d.ts.map@byte-2129 | https://github.com/earendil-works/pi/issues/6265\nconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-ai-0.2.0.tgz!package/dist/api/openai-responses.js.map@byte-12308 | https://github.com/earendil-works/pi/issues/6265\nconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-client-0.2.0.tgz!package/CHANGELOG.md@byte-262 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-server-0.2.0.tgz!package/CHANGELOG.md@byte-322 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-server-0.2.0.tgz!package/CHANGELOG.md@byte-701 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-server-0.2.0.tgz!package/CHANGELOG.md@byte-990 | https://github.com/earendil-works/pi/pull/6898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz!package/CHANGELOG.md@byte-195 | @earendil-works/pi-storage-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz!package/CHANGELOG.md@byte-239 | @earendil-works/pi-session-backend-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz!package/CHANGELOG.md@byte-817 | https://github.com/earendil-works/pi/pull/7655 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz!package/CHANGELOG.md@byte-1139 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.js@byte-5201 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.d.ts.map@byte-8338 | https://github.com/earendil-works/pi/issues/5825.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.js.map@byte-39247 | https://github.com/earendil-works/pi/issues/5825.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-867 | EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-924 | earendil-works | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-1048 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-3628 | secrets.EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7583 | EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7777 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8326 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8597 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8954 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9053 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9262 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/LICENSE@byte-10777 | Luntraa | Legal attribution | Confirmed copyright owner; retain while legally required | +| diffex-phase1-source.tar.gz!diffex-0.2.0/README.md@byte-1551 | https://github.com/earendil-works/pi | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-1421 | security@earendil.com | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4233 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4262 | Earendil-operated | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25698 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25780 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26260 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26327 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26398 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26505 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26935 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-27039 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-27460 | node_modules/@earendil-works/gondolin/node_modules/undici | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-180096 | packages/agent/node_modules/@earendil-works/pi-ai/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-185200 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186028 | packages/coding-agent/node_modules/@earendil-works/pi-agent-core/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186382 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/@anthropic-ai/sdk | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186995 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-833 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1516 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1727 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1981 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-2162 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-2681 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-3558 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-3812 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4091 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4411 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4551 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4583 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4815 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4922 | https://github.com/earendil-works/pi/issues/6851 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5097 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5475 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5851 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6020 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6238 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6419 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6620 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6833 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-7062 | https://github.com/earendil-works/pi/issues/6242 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8126 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8501 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8738 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8947 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9261 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9360 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9458 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9517 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9924 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-10158 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-10727 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11244 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11396 | https://github.com/earendil-works/pi/issues/4715 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11572 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3081 | @earendil-works/pi-telemetry | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3316 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3720 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3950 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4345 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4707 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4854 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5113 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5299 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5852 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5911 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6192 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6534 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6739 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6945 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7167 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7323 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7532 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7829 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8018 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8203 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8704 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9186 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9414 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9737 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9916 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10157 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10359 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10558 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10617 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10805 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11012 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11280 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11638 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11859 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11956 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-12638 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-12897 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-13100 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-13854 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14468 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14690 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14951 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15157 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15399 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15665 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16103 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16282 | https://github.com/earendil-works/pi/pull/6840 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16438 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16587 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16846 | https://github.com/earendil-works/pi/pull/6765 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-17304 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-17547 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18018 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18243 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18414 | https://github.com/earendil-works/pi/issues/6668 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18684 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18853 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19315 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19442 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19885 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-20200 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-22578 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-23284 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-23682 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24105 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24276 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24490 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24689 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24901 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25243 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25465 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25716 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25944 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26171 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26364 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26602 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-27258 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-27944 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28237 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28492 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28692 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28922 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29237 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29571 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29714 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30003 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30223 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30590 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31010 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31137 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31352 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31661 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32339 | https://github.com/earendil-works/pi/pull/6341 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32556 | https://github.com/earendil-works/pi/issues/6256 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32677 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-33198 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-33786 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34048 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34334 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34482 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34748 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34915 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35075 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35317 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35976 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36153 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36212 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36384 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36896 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37002 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37339 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37825 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38316 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38361 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38766 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38793 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39155 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39595 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39656 | @earendil-works/pi-ai/providers/anthropic | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39842 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-40101 | @earendil-works/pi-ai/api/anthropic-messages | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-40183 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-41747 | @earendil-works/pi-ai/providers/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-41842 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43177 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43697 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43858 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44081 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44335 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44530 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44699 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44864 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44963 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45129 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45378 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45498 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45705 | https://github.com/earendil-works/pi/issues/5860 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46195 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46385 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46549 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46724 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47012 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47213 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47454 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47674 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47887 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48423 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48641 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48834 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49073 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49233 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49451 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49843 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50061 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50211 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50396 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50537 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50743 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50965 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51174 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51405 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51759 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52076 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52227 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52409 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52600 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52753 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53245 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53476 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53742 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54208 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54571 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54810 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55020 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55284 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55431 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55648 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55802 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55960 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56180 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56414 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56730 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57076 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57306 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57547 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57775 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-58569 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-58812 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59084 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59362 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59526 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59800 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60014 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60209 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60545 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60757 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61028 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61229 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61480 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61767 | https://github.com/earendil-works/pi/issues/4485 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62013 | https://github.com/earendil-works/pi/issues/4345 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62193 | https://github.com/earendil-works/pi-mono/pull/4358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62387 | https://github.com/earendil-works/pi-mono/pull/4354 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi/issues/4513 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-63736 | https://github.com/earendil-works/pi/issues/4563 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-63928 | https://github.com/earendil-works/pi/issues/4539 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64152 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64857 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64997 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/src/api/azure-openai-responses.ts@byte-1191 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/src/api/openai-responses-shared.ts@byte-18130 | https://github.com/earendil-works/pi/issues/6409. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/src/api/openai-responses.ts@byte-1360 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/test/openai-completions-empty-tools.test.ts@byte-402 | https://github.com/earendil-works/pi-mono/issues/ | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/test/tool-call-id-normalization.test.ts@byte-356 | https://github.com/earendil-works/pi-mono/issues/1022 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/client/CHANGELOG.md@byte-262 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-1659 | https://github.com/earendil-works/pi/issues/7128 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-2379 | https://github.com/earendil-works/pi/issues/7731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-4189 | https://github.com/earendil-works/pi/issues/7290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-4626 | https://github.com/earendil-works/pi/issues/7030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-8452 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-8808 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9120 | @earendil-works/pi-coding-agent/client | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9304 | https://github.com/earendil-works/pi/pull/7344 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9361 | https://github.com/earendil-works/pi/pull/7348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9418 | https://github.com/earendil-works/pi/pull/7371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9475 | https://github.com/earendil-works/pi/pull/7409 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9891 | https://github.com/earendil-works/pi/pull/7231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-10087 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-10937 | https://github.com/earendil-works/pi/pull/7624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-11414 | https://github.com/earendil-works/pi/pull/7681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-11669 | https://github.com/earendil-works/pi/pull/7493 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12209 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12449 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12985 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13459 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13784 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13978 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi/pull/7448 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14245 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14924 | https://github.com/earendil-works/pi/issues/7684 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15238 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15496 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15753 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16117 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16291 | https://github.com/earendil-works/pi/issues/6817 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16615 | https://github.com/earendil-works/pi/issues/7064 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16674 | https://github.com/earendil-works/pi/issues/7547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16840 | https://github.com/earendil-works/pi/issues/7572 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16987 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-17313 | https://github.com/earendil-works/pi/issues/7327 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-17515 | https://github.com/earendil-works/pi/pull/7390 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18264 | https://github.com/earendil-works/pi/issues/7333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18405 | https://github.com/earendil-works/pi/issues/7187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18709 | https://github.com/earendil-works/pi/issues/7292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18966 | https://github.com/earendil-works/pi/pull/7325 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19190 | https://github.com/earendil-works/pi/issues/7319 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19437 | https://github.com/earendil-works/pi/issues/7316 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19593 | https://github.com/earendil-works/pi/issues/7301 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19652 | https://github.com/earendil-works/pi/pull/7421 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20013 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20072 | https://github.com/earendil-works/pi/issues/7113 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20131 | https://github.com/earendil-works/pi/issues/7418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20327 | https://github.com/earendil-works/pi/issues/7153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20477 | https://github.com/earendil-works/pi/issues/7443 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21395 | https://github.com/earendil-works/pi/issues/6768 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21646 | https://github.com/earendil-works/pi/issues/7579 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21865 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22003 | https://github.com/earendil-works/pi/pull/7656 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22205 | https://github.com/earendil-works/pi/pull/7387 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22369 | https://github.com/earendil-works/pi/pull/7435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22626 | https://github.com/earendil-works/pi/pull/7330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22809 | https://github.com/earendil-works/pi/pull/7552 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22972 | https://github.com/earendil-works/pi/pull/7370 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23194 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23419 | https://github.com/earendil-works/pi/pull/7570 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23656 | https://github.com/earendil-works/pi/pull/7569 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23870 | https://github.com/earendil-works/pi/pull/7632 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24254 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24469 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24685 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24917 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25083 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25302 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25495 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25690 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25880 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26158 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26300 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26463 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26595 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26938 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26997 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-28969 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29290 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29537 | https://github.com/earendil-works/pi/pull/7191 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29636 | https://github.com/earendil-works/pi/pull/7215 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29948 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30257 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30478 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30741 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31024 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31159 | https://github.com/earendil-works/pi/issues/7180 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31404 | https://github.com/earendil-works/pi/issues/7096 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31614 | https://github.com/earendil-works/pi/pull/7221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31864 | https://github.com/earendil-works/pi/pull/7258 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32179 | https://github.com/earendil-works/pi/pull/7022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32436 | https://github.com/earendil-works/pi/pull/7210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32649 | https://github.com/earendil-works/pi/pull/7211 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32899 | https://github.com/earendil-works/pi/pull/7214 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33118 | https://github.com/earendil-works/pi/issues/6968 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33278 | https://github.com/earendil-works/pi/pull/7103 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33477 | https://github.com/earendil-works/pi/pull/7110 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33718 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33777 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33955 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34218 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34507 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34705 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-35689 | https://github.com/earendil-works/pi/pull/7045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-35950 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-36182 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-36279 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37019 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37204 | https://github.com/earendil-works/pi/issues/6949 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37263 | https://github.com/earendil-works/pi/pull/7032 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37521 | https://github.com/earendil-works/pi/pull/7106 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37790 | https://github.com/earendil-works/pi/pull/7072 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-39369 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-39616 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40138 | https://github.com/earendil-works/pi/pull/6971 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40385 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40631 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40895 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41152 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41372 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41579 | https://github.com/earendil-works/pi/pull/6903 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41801 | https://github.com/earendil-works/pi/pull/6964 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42031 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42200 | https://github.com/earendil-works/pi/issues/6977 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42363 | https://github.com/earendil-works/pi/issues/6210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42535 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42766 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42943 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43173 | https://github.com/earendil-works/pi/pull/7034 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43487 | https://github.com/earendil-works/pi/issues/7005 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43626 | https://github.com/earendil-works/pi/pull/7009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43824 | https://github.com/earendil-works/pi/issues/6999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-44755 | https://github.com/earendil-works/pi/pull/6913 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-45079 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-45388 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-46598 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-46815 | https://github.com/earendil-works/pi/pull/6865 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47014 | https://github.com/earendil-works/pi/pull/6772 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47604 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47782 | https://github.com/earendil-works/pi/pull/6896 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48108 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48357 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48765 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48992 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49198 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49458 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49597 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49808 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50004 | https://github.com/earendil-works/pi/pull/6730 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50185 | https://github.com/earendil-works/pi/pull/6731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50638 | https://github.com/earendil-works/pi/issues/6793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50796 | https://github.com/earendil-works/pi/issues/6695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50956 | https://github.com/earendil-works/pi/issues/6735 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-51221 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-51992 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-52129 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-53215 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-53662 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-56629 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-57771 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-57912 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-58079 | https://github.com/earendil-works/pi-mono/issues/6629 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-58581 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-59696 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-59877 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60191 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60400 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60653 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61116 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61377 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61592 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61798 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62006 | https://github.com/earendil-works/pi-mono/pull/6595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62242 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62439 | https://github.com/earendil-works/pi-mono/pull/6604 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62676 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-63127 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-63344 | https://github.com/earendil-works/pi/issues/6621 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-64433 | https://github.com/earendil-works/pi/pull/6470 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-64691 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-65355 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-66839 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67138 | https://github.com/earendil-works/pi/issues/6201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67309 | https://github.com/earendil-works/pi/issues/6363 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67466 | https://github.com/earendil-works/pi/pull/6350 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67640 | https://github.com/earendil-works/pi/pull/6267 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68073 | https://github.com/earendil-works/pi/pull/6309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68232 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68360 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68731 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68912 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69194 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69424 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69623 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69812 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69943 | https://github.com/earendil-works/pi/pull/6430 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70108 | https://github.com/earendil-works/pi/pull/6418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70362 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70532 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70800 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70981 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71360 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71513 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71991 | https://github.com/earendil-works/pi/pull/6279 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72235 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72425 | https://github.com/earendil-works/pi/issues/6231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72627 | https://github.com/earendil-works/pi/issues/6189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72819 | https://github.com/earendil-works/pi/issues/6223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73006 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73152 | https://github.com/earendil-works/pi/issues/6326 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73499 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73681 | https://github.com/earendil-works/pi/issues/6278 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73802 | https://github.com/earendil-works/pi/issues/6354 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74035 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74184 | https://github.com/earendil-works/pi/issues/6367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74390 | https://github.com/earendil-works/pi/issues/6369 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74564 | https://github.com/earendil-works/pi/issues/6407 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74711 | https://github.com/earendil-works/pi/issues/6395 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76320 | https://github.com/earendil-works/pi/pull/6078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76557 | https://github.com/earendil-works/pi/pull/6175 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76742 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76947 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77162 | https://github.com/earendil-works/pi/issues/6122 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77323 | https://github.com/earendil-works/pi/issues/6168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77644 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77950 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78108 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78361 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78538 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78790 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78940 | https://github.com/earendil-works/pi/pull/6074 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79121 | https://github.com/earendil-works/pi/pull/6048 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79383 | https://github.com/earendil-works/pi/pull/6030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79474 | https://github.com/earendil-works/pi/pull/6063 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79724 | https://github.com/earendil-works/pi/issues/6162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79889 | https://github.com/earendil-works/pi/issues/6133 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80209 | https://github.com/earendil-works/pi/pull/6026 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80383 | https://github.com/earendil-works/pi/issues/6002 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80556 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80713 | https://github.com/earendil-works/pi/issues/4290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80894 | https://github.com/earendil-works/pi/issues/6070 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-81069 | https://github.com/earendil-works/pi/issues/6047 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-81226 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82054 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82247 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82306 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82488 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83149 | https://github.com/earendil-works/pi/issues/5965 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83363 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83406 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83712 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84019 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84229 | https://github.com/earendil-works/pi/pull/5784 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84633 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84877 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85415 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85697 | https://github.com/earendil-works/pi/issues/5953 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85803 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85836 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-86883 | https://github.com/earendil-works/pi/pull/5962 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87130 | https://github.com/earendil-works/pi/issues/5960 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87268 | https://github.com/earendil-works/pi/issues/5959 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87462 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87597 | https://github.com/earendil-works/pi/issues/5957 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87838 | https://github.com/earendil-works/pi/issues/5943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-88077 | https://github.com/earendil-works/pi/issues/5940 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89349 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89554 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89755 | https://github.com/earendil-works/pi/issues/5905 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89901 | https://github.com/earendil-works/pi/issues/5909 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90080 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90292 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90511 | https://github.com/earendil-works/pi/issues/5899 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90696 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90854 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91027 | https://github.com/earendil-works/pi/issues/5892 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91189 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91222 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92236 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92269 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92387 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92633 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92782 | https://github.com/earendil-works/pi/issues/5877 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92912 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-93241 | https://github.com/earendil-works/pi/issues/4811 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-93404 | https://github.com/earendil-works/pi/issues/5720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94390 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94570 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94805 | https://github.com/earendil-works/pi/pull/5869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95058 | https://github.com/earendil-works/pi/pull/5756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95670 | https://github.com/earendil-works/pi/issues/5868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95986 | https://github.com/earendil-works/pi/issues/5830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97194 | https://github.com/earendil-works/pi/pull/5798 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97481 | https://github.com/earendil-works/pi/issues/5790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97697 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97999 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98173 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98427 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98650 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98881 | https://github.com/earendil-works/pi/issues/5805 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99179 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99383 | https://github.com/earendil-works/pi/issues/5747 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99594 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100184 | https://github.com/earendil-works/pi/issues/5739 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100320 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100586 | https://github.com/earendil-works/pi/pull/5753 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100798 | https://github.com/earendil-works/pi/issues/5055 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101075 | https://github.com/earendil-works/pi/issues/5724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101280 | https://github.com/earendil-works/pi/issues/5729 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101463 | https://github.com/earendil-works/pi/pull/5708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101712 | https://github.com/earendil-works/pi/issues/5687 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101891 | https://github.com/earendil-works/pi/issues/5689 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102118 | https://github.com/earendil-works/pi/issues/5695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102331 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102561 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102771 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102967 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103217 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103276 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103545 | https://github.com/earendil-works/pi/issues/5661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104469 | https://github.com/earendil-works/pi/pull/5587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104697 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104984 | https://github.com/earendil-works/pi/issues/5619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105146 | https://github.com/earendil-works/pi/pull/5627 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105366 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105569 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105739 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106032 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106216 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106459 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106623 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106932 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107112 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107314 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107545 | https://github.com/earendil-works/pi/issues/5643 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107699 | https://github.com/earendil-works/pi/issues/5669 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107887 | https://github.com/earendil-works/pi/issues/5596 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-108113 | https://github.com/earendil-works/pi/pull/5560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109308 | https://github.com/earendil-works/pi/pull/5553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109507 | https://github.com/earendil-works/pi/pull/5547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109743 | https://github.com/earendil-works/pi/issues/5523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110048 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110153 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110423 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110620 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110846 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111006 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111201 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111352 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111568 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111792 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111963 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112170 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112359 | https://github.com/earendil-works/pi/issues/5433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112521 | https://github.com/earendil-works/pi/issues/5377 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112744 | https://github.com/earendil-works/pi/issues/5418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112923 | https://github.com/earendil-works/pi/issues/5516 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-113227 | https://github.com/earendil-works/pi/issues/5045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-113418 | https://github.com/earendil-works/pi/issues/4841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-114693 | https://github.com/earendil-works/pi/pull/5332 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-114895 | https://github.com/earendil-works/pi/issues/5455 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115027 | https://github.com/earendil-works/pi/issues/5415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115373 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115813 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115983 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116179 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116376 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116562 | https://github.com/earendil-works/pi/issues/5432 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116790 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116928 | https://github.com/earendil-works/pi/issues/5359 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117085 | https://github.com/earendil-works/pi/pull/5371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117880 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117964 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-118343 | https://github.com/earendil-works/pi/pull/5306 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119193 | https://github.com/earendil-works/pi/issues/5226 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119784 | https://github.com/earendil-works/pi/issues/5294 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119988 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120149 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120341 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120497 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120660 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120896 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121142 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121355 | https://github.com/earendil-works/pi/issues/5231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121513 | https://github.com/earendil-works/pi/pull/5264 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121713 | https://github.com/earendil-works/pi/issues/5299 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122351 | https://github.com/earendil-works/pi-mono/pull/5167 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122510 | https://github.com/earendil-works/pi-mono/pull/5202 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122675 | https://github.com/earendil-works/pi-mono/issues/5153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122805 | https://github.com/earendil-works/pi-mono/pull/5176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122997 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123161 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123193 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123417 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123634 | https://github.com/earendil-works/pi-mono/issues/5201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123829 | https://github.com/earendil-works/pi-mono/issues/5184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124000 | https://github.com/earendil-works/pi-mono/pull/5195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124215 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124481 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124853 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-125036 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126033 | https://github.com/earendil-works/pi/issues/5109 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126226 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126471 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126804 | https://github.com/earendil-works/pi/issues/4829 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127005 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127525 | https://github.com/earendil-works/pi/issues/5080 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127725 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127943 | https://github.com/earendil-works/pi/issues/5028 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128277 | https://github.com/earendil-works/pi/issues/5095 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128438 | https://github.com/earendil-works/pi/pull/5029 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128679 | https://github.com/earendil-works/pi/issues/4879 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128918 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129128 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129392 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129539 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129707 | https://github.com/earendil-works/pi/pull/5115 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129929 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-130141 | https://github.com/earendil-works/pi/issues/5132 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-130338 | https://github.com/earendil-works/pi/issues/5092 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131431 | https://github.com/earendil-works/pi/issues/4874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131599 | https://github.com/earendil-works/pi/issues/5039 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131761 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131936 | https://github.com/earendil-works/pi/issues/4929 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132098 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132365 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132545 | https://github.com/earendil-works/pi/issues/4764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132732 | https://github.com/earendil-works/pi/issues/4907 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132916 | https://github.com/earendil-works/pi/issues/4897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133095 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133245 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133403 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133633 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133984 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134158 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134393 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134497 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134601 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134788 | https://github.com/earendil-works/pi/issues/5041 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-135766 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-135949 | https://github.com/earendil-works/pi/issues/4821 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136202 | https://github.com/earendil-works/pi/issues/4916 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136431 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136583 | https://github.com/earendil-works/pi/issues/4868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136733 | https://github.com/earendil-works/pi/issues/4869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136873 | https://github.com/earendil-works/pi-mono/pull/4873 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137067 | https://github.com/earendil-works/pi-mono/pull/4898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137253 | https://github.com/earendil-works/pi-mono/pull/4830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137439 | https://github.com/earendil-works/pi/issues/4847 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137633 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137665 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137871 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138009 | https://github.com/earendil-works/pi/issues/4832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138236 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138477 | https://github.com/earendil-works/pi/issues/4870 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138652 | https://github.com/earendil-works/pi/issues/4876 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138801 | https://github.com/earendil-works/pi/issues/4819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138958 | https://github.com/earendil-works/pi/issues/4818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139128 | https://github.com/earendil-works/pi/issues/4878 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139321 | https://github.com/earendil-works/pi/issues/4307 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139518 | https://github.com/earendil-works/pi-mono/pull/4756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-140261 | https://github.com/earendil-works/pi-mono/pull/4724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-140445 | https://github.com/earendil-works/pi-mono/pull/4775 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141284 | https://github.com/earendil-works/pi/issues/4752 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141481 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141822 | https://github.com/earendil-works/pi-mono/pull/4799 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142092 | https://github.com/earendil-works/pi/issues/4710 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142265 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142414 | https://github.com/earendil-works/pi/issues/4763 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142585 | https://github.com/earendil-works/pi-mono/pull/4759 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142789 | https://github.com/earendil-works/pi-mono/pull/4709 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142996 | https://github.com/earendil-works/pi-mono/pull/4664 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143330 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143484 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143586 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143687 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143766 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143965 | https://github.com/earendil-works/pi/issues/4793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144201 | https://github.com/earendil-works/pi/issues/4681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144423 | https://github.com/earendil-works/pi-mono/pull/4661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144686 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144718 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144876 | https://github.com/earendil-works/pi/issues/4612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145061 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145239 | https://github.com/earendil-works/pi/issues/4647 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145421 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145587 | https://github.com/earendil-works/pi/issues/4665 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145763 | https://github.com/earendil-works/pi-mono/pull/4243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146063 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146095 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146267 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146299 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146580 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146612 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146815 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146847 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147068 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147100 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147304 | https://github.com/earendil-works/pi/issues/4650 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147363 | https://github.com/earendil-works/pi/issues/4652 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147422 | https://github.com/earendil-works/pi/issues/4653 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147601 | https://github.com/earendil-works/pi/issues/4623 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147738 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147998 | https://github.com/earendil-works/pi/issues/4484 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148215 | https://github.com/earendil-works/pi-mono/pull/4541 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148413 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148445 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148621 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148696 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148985 | https://github.com/earendil-works/pi/issues/4587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149211 | https://github.com/earendil-works/pi/issues/4619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149438 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149470 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149726 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150281 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150357 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150494 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150716 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150880 | https://github.com/earendil-works/pi/pull/4458 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151133 | https://github.com/earendil-works/pi/issues/4519 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151393 | https://github.com/earendil-works/pi/issues/4492 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151538 | https://github.com/earendil-works/pi/issues/4508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151811 | https://github.com/earendil-works/pi/issues/4559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151966 | https://github.com/earendil-works/pi/issues/4534 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152114 | https://github.com/earendil-works/pi/issues/4553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152291 | https://github.com/earendil-works/pi/issues/4583 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152470 | https://github.com/earendil-works/pi/issues/4510 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152715 | https://github.com/earendil-works/pi/issues/4503 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152855 | https://github.com/earendil-works/pi/issues/4429 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152988 | https://github.com/earendil-works/pi/issues/4433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153216 | https://github.com/earendil-works/pi-mono/pull/4426 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153611 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153813 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153947 | https://github.com/earendil-works/pi/issues/4333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154072 | https://github.com/earendil-works/pi/issues/4289 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154261 | https://github.com/earendil-works/pi/issues/4280 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154420 | earendil-works/pi-mono | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154449 | @earendil-works/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154685 | @earendil-works/pi-coding-agent | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-155510 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-155959 | https://github.com/earendil-works/pi-mono/pull/4244 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-156127 | https://github.com/earendil-works/pi-mono/pull/4162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-156969 | https://github.com/earendil-works/pi-mono/pull/4234 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-157415 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-157547 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233030 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233178 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233958 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/docs/containerization.md@byte-1147 | https://github.com/earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/index.ts@byte-568 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/index.ts@byte-1194 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-658 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1138 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1205 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1276 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1383 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1813 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1917 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package.json@byte-306 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/core/tools/find.ts@byte-8995 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/migrations.ts@byte-2629 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts@byte-746 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts@byte-899 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/interactive-mode.ts@byte-5956 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/interactive-mode.ts@byte-5994 | ./components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/interactive-mode.ts@byte-254060 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/changelog.ts@byte-391 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/child-process.ts@byte-1531 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/changelog.test.ts@byte-1331 | https://github.com/earendil-works/pi-mono/pull/5167 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-288 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-326 | ../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-4308 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-4378 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-4541 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts@byte-304 | https://github.com/earendil-works/pi-mono/issues/2791 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3302 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5080-signal-shutdown-extension-cleanup.test.ts@byte-453 | https://github.com/earendil-works/pi/issues/5080 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5303-bash-output-truncation.test.ts@byte-327 | https://github.com/earendil-works/pi/issues/5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5724-sigterm-signal-exit.test.ts@byte-169 | https://github.com/earendil-works/pi/issues/5724 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5868-rpc-unknown-command-id.test.ts@byte-296 | https://github.com/earendil-works/pi/issues/5868 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/6104-find-root-relativization.test.ts@byte-219 | https://github.com/earendil-works/pi/issues/6104 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/protocol/CHANGELOG.md@byte-388 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/protocol/CHANGELOG.md@byte-666 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-322 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-701 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-990 | https://github.com/earendil-works/pi/pull/6898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-195 | @earendil-works/pi-storage-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-239 | @earendil-works/pi-session-backend-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-817 | https://github.com/earendil-works/pi/pull/7655 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-1139 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-198 | https://github.com/earendil-works/pi/issues/7735 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-377 | https://github.com/earendil-works/pi/issues/7725 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-1547 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-2350 | https://github.com/earendil-works/pi/pull/7361 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-3034 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-3932 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4242 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4374 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4527 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4649 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4971 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5243 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5452 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5779 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5988 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6389 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6606 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6841 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7185 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7437 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7870 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8245 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8376 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8785 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8989 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9229 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9469 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9528 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9788 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10077 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10247 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10439 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10709 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10866 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11067 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11264 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11550 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11738 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11946 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12220 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12456 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12634 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12788 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12930 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13211 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13462 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13779 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13953 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14292 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14396 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14700 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15463 | https://github.com/earendil-works/pi-mono/pull/4327 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15629 | https://github.com/earendil-works/pi-mono/pull/4379 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15805 | https://github.com/earendil-works/pi-mono/pull/4463 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-16008 | https://github.com/earendil-works/pi-mono/pull/4461 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-16196 | https://github.com/earendil-works/pi-mono/pull/4482 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/src/components/markdown.ts@byte-5102 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/test/editor.test.ts@byte-80874 | earendil-works/pi#5496: | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-phase1-source.tar.gz!diffex-0.2.0/scripts/release-notes.mjs@byte-478 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-1659 | https://github.com/earendil-works/pi/issues/7128 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-2379 | https://github.com/earendil-works/pi/issues/7731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-4189 | https://github.com/earendil-works/pi/issues/7290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-4626 | https://github.com/earendil-works/pi/issues/7030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-8452 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-8808 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-9120 | @earendil-works/pi-coding-agent/client | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-9304 | https://github.com/earendil-works/pi/pull/7344 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-9361 | https://github.com/earendil-works/pi/pull/7348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-9418 | https://github.com/earendil-works/pi/pull/7371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-9475 | https://github.com/earendil-works/pi/pull/7409 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-9891 | https://github.com/earendil-works/pi/pull/7231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-10087 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-10937 | https://github.com/earendil-works/pi/pull/7624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-11414 | https://github.com/earendil-works/pi/pull/7681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-11669 | https://github.com/earendil-works/pi/pull/7493 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-12209 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-12449 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-12985 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-13459 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-13784 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-13978 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi/pull/7448 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-14245 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-14924 | https://github.com/earendil-works/pi/issues/7684 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-15238 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-15496 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-15753 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-16117 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-16291 | https://github.com/earendil-works/pi/issues/6817 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-16615 | https://github.com/earendil-works/pi/issues/7064 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-16674 | https://github.com/earendil-works/pi/issues/7547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-16840 | https://github.com/earendil-works/pi/issues/7572 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-16987 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-17313 | https://github.com/earendil-works/pi/issues/7327 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-17515 | https://github.com/earendil-works/pi/pull/7390 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-18264 | https://github.com/earendil-works/pi/issues/7333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-18405 | https://github.com/earendil-works/pi/issues/7187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-18709 | https://github.com/earendil-works/pi/issues/7292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-18966 | https://github.com/earendil-works/pi/pull/7325 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-19190 | https://github.com/earendil-works/pi/issues/7319 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-19437 | https://github.com/earendil-works/pi/issues/7316 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-19593 | https://github.com/earendil-works/pi/issues/7301 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-19652 | https://github.com/earendil-works/pi/pull/7421 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-20013 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-20072 | https://github.com/earendil-works/pi/issues/7113 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-20131 | https://github.com/earendil-works/pi/issues/7418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-20327 | https://github.com/earendil-works/pi/issues/7153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-20477 | https://github.com/earendil-works/pi/issues/7443 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-21395 | https://github.com/earendil-works/pi/issues/6768 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-21646 | https://github.com/earendil-works/pi/issues/7579 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-21865 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-22003 | https://github.com/earendil-works/pi/pull/7656 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-22205 | https://github.com/earendil-works/pi/pull/7387 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-22369 | https://github.com/earendil-works/pi/pull/7435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-22626 | https://github.com/earendil-works/pi/pull/7330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-22809 | https://github.com/earendil-works/pi/pull/7552 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-22972 | https://github.com/earendil-works/pi/pull/7370 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-23194 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-23419 | https://github.com/earendil-works/pi/pull/7570 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-23656 | https://github.com/earendil-works/pi/pull/7569 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-23870 | https://github.com/earendil-works/pi/pull/7632 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-24254 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-24469 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-24685 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-24917 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-25083 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-25302 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-25495 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-25690 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-25880 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-26158 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-26300 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-26463 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-26595 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-26938 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-26997 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-28969 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-29290 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-29537 | https://github.com/earendil-works/pi/pull/7191 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-29636 | https://github.com/earendil-works/pi/pull/7215 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-29948 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-30257 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-30478 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-30741 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-31024 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-31159 | https://github.com/earendil-works/pi/issues/7180 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-31404 | https://github.com/earendil-works/pi/issues/7096 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-31614 | https://github.com/earendil-works/pi/pull/7221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-31864 | https://github.com/earendil-works/pi/pull/7258 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-32179 | https://github.com/earendil-works/pi/pull/7022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-32436 | https://github.com/earendil-works/pi/pull/7210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-32649 | https://github.com/earendil-works/pi/pull/7211 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-32899 | https://github.com/earendil-works/pi/pull/7214 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-33118 | https://github.com/earendil-works/pi/issues/6968 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-33278 | https://github.com/earendil-works/pi/pull/7103 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-33477 | https://github.com/earendil-works/pi/pull/7110 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-33718 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-33777 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-33955 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-34218 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-34507 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-34705 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-35689 | https://github.com/earendil-works/pi/pull/7045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-35950 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-36182 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-36279 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-37019 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-37204 | https://github.com/earendil-works/pi/issues/6949 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-37263 | https://github.com/earendil-works/pi/pull/7032 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-37521 | https://github.com/earendil-works/pi/pull/7106 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-37790 | https://github.com/earendil-works/pi/pull/7072 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-39369 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-39616 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-40138 | https://github.com/earendil-works/pi/pull/6971 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-40385 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-40631 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-40895 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-41152 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-41372 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-41579 | https://github.com/earendil-works/pi/pull/6903 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-41801 | https://github.com/earendil-works/pi/pull/6964 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-42031 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-42200 | https://github.com/earendil-works/pi/issues/6977 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-42363 | https://github.com/earendil-works/pi/issues/6210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-42535 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-42766 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-42943 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-43173 | https://github.com/earendil-works/pi/pull/7034 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-43487 | https://github.com/earendil-works/pi/issues/7005 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-43626 | https://github.com/earendil-works/pi/pull/7009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-43824 | https://github.com/earendil-works/pi/issues/6999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-44755 | https://github.com/earendil-works/pi/pull/6913 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-45079 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-45388 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-46598 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-46815 | https://github.com/earendil-works/pi/pull/6865 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-47014 | https://github.com/earendil-works/pi/pull/6772 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-47604 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-47782 | https://github.com/earendil-works/pi/pull/6896 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-48108 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-48357 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-48765 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-48992 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-49198 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-49458 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-49597 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-49808 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-50004 | https://github.com/earendil-works/pi/pull/6730 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-50185 | https://github.com/earendil-works/pi/pull/6731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-50638 | https://github.com/earendil-works/pi/issues/6793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-50796 | https://github.com/earendil-works/pi/issues/6695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-50956 | https://github.com/earendil-works/pi/issues/6735 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-51221 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-51992 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-52129 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-53215 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-53662 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-56629 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-57771 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-57912 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-58079 | https://github.com/earendil-works/pi-mono/issues/6629 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-58581 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-59696 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-59877 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-60191 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-60400 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-60653 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-61116 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-61377 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-61592 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-61798 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-62006 | https://github.com/earendil-works/pi-mono/pull/6595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-62242 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-62439 | https://github.com/earendil-works/pi-mono/pull/6604 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-62676 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-63127 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-63344 | https://github.com/earendil-works/pi/issues/6621 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-64433 | https://github.com/earendil-works/pi/pull/6470 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-64691 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-65355 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-66839 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-67138 | https://github.com/earendil-works/pi/issues/6201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-67309 | https://github.com/earendil-works/pi/issues/6363 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-67466 | https://github.com/earendil-works/pi/pull/6350 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-67640 | https://github.com/earendil-works/pi/pull/6267 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-68073 | https://github.com/earendil-works/pi/pull/6309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-68232 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-68360 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-68731 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-68912 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-69194 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-69424 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-69623 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-69812 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-69943 | https://github.com/earendil-works/pi/pull/6430 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-70108 | https://github.com/earendil-works/pi/pull/6418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-70362 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-70532 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-70800 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-70981 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-71360 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-71513 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-71991 | https://github.com/earendil-works/pi/pull/6279 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-72235 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-72425 | https://github.com/earendil-works/pi/issues/6231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-72627 | https://github.com/earendil-works/pi/issues/6189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-72819 | https://github.com/earendil-works/pi/issues/6223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-73006 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-73152 | https://github.com/earendil-works/pi/issues/6326 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-73499 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-73681 | https://github.com/earendil-works/pi/issues/6278 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-73802 | https://github.com/earendil-works/pi/issues/6354 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-74035 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-74184 | https://github.com/earendil-works/pi/issues/6367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-74390 | https://github.com/earendil-works/pi/issues/6369 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-74564 | https://github.com/earendil-works/pi/issues/6407 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-74711 | https://github.com/earendil-works/pi/issues/6395 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-76320 | https://github.com/earendil-works/pi/pull/6078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-76557 | https://github.com/earendil-works/pi/pull/6175 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-76742 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-76947 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-77162 | https://github.com/earendil-works/pi/issues/6122 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-77323 | https://github.com/earendil-works/pi/issues/6168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-77644 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-77950 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-78108 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-78361 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-78538 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-78790 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-78940 | https://github.com/earendil-works/pi/pull/6074 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-79121 | https://github.com/earendil-works/pi/pull/6048 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-79383 | https://github.com/earendil-works/pi/pull/6030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-79474 | https://github.com/earendil-works/pi/pull/6063 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-79724 | https://github.com/earendil-works/pi/issues/6162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-79889 | https://github.com/earendil-works/pi/issues/6133 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-80209 | https://github.com/earendil-works/pi/pull/6026 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-80383 | https://github.com/earendil-works/pi/issues/6002 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-80556 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-80713 | https://github.com/earendil-works/pi/issues/4290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-80894 | https://github.com/earendil-works/pi/issues/6070 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-81069 | https://github.com/earendil-works/pi/issues/6047 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-81226 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-82054 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-82247 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-82306 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-82488 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-83149 | https://github.com/earendil-works/pi/issues/5965 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-83363 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-83406 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-83712 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-84019 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-84229 | https://github.com/earendil-works/pi/pull/5784 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-84633 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-84877 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-85415 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-85697 | https://github.com/earendil-works/pi/issues/5953 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-85803 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-85836 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-86883 | https://github.com/earendil-works/pi/pull/5962 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-87130 | https://github.com/earendil-works/pi/issues/5960 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-87268 | https://github.com/earendil-works/pi/issues/5959 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-87462 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-87597 | https://github.com/earendil-works/pi/issues/5957 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-87838 | https://github.com/earendil-works/pi/issues/5943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-88077 | https://github.com/earendil-works/pi/issues/5940 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-89349 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-89554 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-89755 | https://github.com/earendil-works/pi/issues/5905 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-89901 | https://github.com/earendil-works/pi/issues/5909 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-90080 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-90292 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-90511 | https://github.com/earendil-works/pi/issues/5899 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-90696 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-90854 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-91027 | https://github.com/earendil-works/pi/issues/5892 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-91189 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-91222 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-92236 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-92269 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-92387 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-92633 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-92782 | https://github.com/earendil-works/pi/issues/5877 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-92912 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-93241 | https://github.com/earendil-works/pi/issues/4811 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-93404 | https://github.com/earendil-works/pi/issues/5720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-94390 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-94570 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-94805 | https://github.com/earendil-works/pi/pull/5869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-95058 | https://github.com/earendil-works/pi/pull/5756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-95670 | https://github.com/earendil-works/pi/issues/5868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-95986 | https://github.com/earendil-works/pi/issues/5830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-97194 | https://github.com/earendil-works/pi/pull/5798 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-97481 | https://github.com/earendil-works/pi/issues/5790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-97697 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-97999 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-98173 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-98427 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-98650 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-98881 | https://github.com/earendil-works/pi/issues/5805 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-99179 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-99383 | https://github.com/earendil-works/pi/issues/5747 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-99594 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-100184 | https://github.com/earendil-works/pi/issues/5739 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-100320 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-100586 | https://github.com/earendil-works/pi/pull/5753 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-100798 | https://github.com/earendil-works/pi/issues/5055 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-101075 | https://github.com/earendil-works/pi/issues/5724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-101280 | https://github.com/earendil-works/pi/issues/5729 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-101463 | https://github.com/earendil-works/pi/pull/5708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-101712 | https://github.com/earendil-works/pi/issues/5687 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-101891 | https://github.com/earendil-works/pi/issues/5689 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-102118 | https://github.com/earendil-works/pi/issues/5695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-102331 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-102561 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-102771 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-102967 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-103217 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-103276 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-103545 | https://github.com/earendil-works/pi/issues/5661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-104469 | https://github.com/earendil-works/pi/pull/5587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-104697 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-104984 | https://github.com/earendil-works/pi/issues/5619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-105146 | https://github.com/earendil-works/pi/pull/5627 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-105366 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-105569 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-105739 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-106032 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-106216 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-106459 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-106623 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-106932 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-107112 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-107314 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-107545 | https://github.com/earendil-works/pi/issues/5643 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-107699 | https://github.com/earendil-works/pi/issues/5669 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-107887 | https://github.com/earendil-works/pi/issues/5596 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-108113 | https://github.com/earendil-works/pi/pull/5560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-109308 | https://github.com/earendil-works/pi/pull/5553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-109507 | https://github.com/earendil-works/pi/pull/5547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-109743 | https://github.com/earendil-works/pi/issues/5523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-110048 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-110153 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-110423 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-110620 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-110846 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-111006 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-111201 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-111352 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-111568 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-111792 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-111963 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-112170 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-112359 | https://github.com/earendil-works/pi/issues/5433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-112521 | https://github.com/earendil-works/pi/issues/5377 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-112744 | https://github.com/earendil-works/pi/issues/5418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-112923 | https://github.com/earendil-works/pi/issues/5516 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-113227 | https://github.com/earendil-works/pi/issues/5045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-113418 | https://github.com/earendil-works/pi/issues/4841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-114693 | https://github.com/earendil-works/pi/pull/5332 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-114895 | https://github.com/earendil-works/pi/issues/5455 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-115027 | https://github.com/earendil-works/pi/issues/5415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-115373 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-115813 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-115983 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-116179 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-116376 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-116562 | https://github.com/earendil-works/pi/issues/5432 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-116790 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-116928 | https://github.com/earendil-works/pi/issues/5359 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-117085 | https://github.com/earendil-works/pi/pull/5371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-117880 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-117964 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-118343 | https://github.com/earendil-works/pi/pull/5306 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-119193 | https://github.com/earendil-works/pi/issues/5226 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-119784 | https://github.com/earendil-works/pi/issues/5294 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-119988 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-120149 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-120341 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-120497 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-120660 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-120896 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-121142 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-121355 | https://github.com/earendil-works/pi/issues/5231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-121513 | https://github.com/earendil-works/pi/pull/5264 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-121713 | https://github.com/earendil-works/pi/issues/5299 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-122351 | https://github.com/earendil-works/pi-mono/pull/5167 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-122510 | https://github.com/earendil-works/pi-mono/pull/5202 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-122675 | https://github.com/earendil-works/pi-mono/issues/5153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-122805 | https://github.com/earendil-works/pi-mono/pull/5176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-122997 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-123161 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-123193 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-123417 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-123634 | https://github.com/earendil-works/pi-mono/issues/5201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-123829 | https://github.com/earendil-works/pi-mono/issues/5184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-124000 | https://github.com/earendil-works/pi-mono/pull/5195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-124215 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-124481 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-124853 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-125036 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-126033 | https://github.com/earendil-works/pi/issues/5109 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-126226 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-126471 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-126804 | https://github.com/earendil-works/pi/issues/4829 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-127005 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-127525 | https://github.com/earendil-works/pi/issues/5080 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-127725 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-127943 | https://github.com/earendil-works/pi/issues/5028 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-128277 | https://github.com/earendil-works/pi/issues/5095 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-128438 | https://github.com/earendil-works/pi/pull/5029 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-128679 | https://github.com/earendil-works/pi/issues/4879 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-128918 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-129128 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-129392 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-129539 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-129707 | https://github.com/earendil-works/pi/pull/5115 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-129929 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-130141 | https://github.com/earendil-works/pi/issues/5132 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-130338 | https://github.com/earendil-works/pi/issues/5092 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-131431 | https://github.com/earendil-works/pi/issues/4874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-131599 | https://github.com/earendil-works/pi/issues/5039 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-131761 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-131936 | https://github.com/earendil-works/pi/issues/4929 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-132098 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-132365 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-132545 | https://github.com/earendil-works/pi/issues/4764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-132732 | https://github.com/earendil-works/pi/issues/4907 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-132916 | https://github.com/earendil-works/pi/issues/4897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-133095 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-133245 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-133403 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-133633 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-133984 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-134158 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-134393 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-134497 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-134601 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-134788 | https://github.com/earendil-works/pi/issues/5041 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-135766 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-135949 | https://github.com/earendil-works/pi/issues/4821 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-136202 | https://github.com/earendil-works/pi/issues/4916 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-136431 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-136583 | https://github.com/earendil-works/pi/issues/4868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-136733 | https://github.com/earendil-works/pi/issues/4869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-136873 | https://github.com/earendil-works/pi-mono/pull/4873 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-137067 | https://github.com/earendil-works/pi-mono/pull/4898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-137253 | https://github.com/earendil-works/pi-mono/pull/4830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-137439 | https://github.com/earendil-works/pi/issues/4847 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-137633 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-137665 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-137871 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-138009 | https://github.com/earendil-works/pi/issues/4832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-138236 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-138477 | https://github.com/earendil-works/pi/issues/4870 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-138652 | https://github.com/earendil-works/pi/issues/4876 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-138801 | https://github.com/earendil-works/pi/issues/4819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-138958 | https://github.com/earendil-works/pi/issues/4818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-139128 | https://github.com/earendil-works/pi/issues/4878 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-139321 | https://github.com/earendil-works/pi/issues/4307 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-139518 | https://github.com/earendil-works/pi-mono/pull/4756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-140261 | https://github.com/earendil-works/pi-mono/pull/4724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-140445 | https://github.com/earendil-works/pi-mono/pull/4775 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-141284 | https://github.com/earendil-works/pi/issues/4752 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-141481 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-141822 | https://github.com/earendil-works/pi-mono/pull/4799 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-142092 | https://github.com/earendil-works/pi/issues/4710 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-142265 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-142414 | https://github.com/earendil-works/pi/issues/4763 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-142585 | https://github.com/earendil-works/pi-mono/pull/4759 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-142789 | https://github.com/earendil-works/pi-mono/pull/4709 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-142996 | https://github.com/earendil-works/pi-mono/pull/4664 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-143330 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-143484 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-143586 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-143687 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-143766 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-143965 | https://github.com/earendil-works/pi/issues/4793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-144201 | https://github.com/earendil-works/pi/issues/4681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-144423 | https://github.com/earendil-works/pi-mono/pull/4661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-144686 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-144718 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-144876 | https://github.com/earendil-works/pi/issues/4612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-145061 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-145239 | https://github.com/earendil-works/pi/issues/4647 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-145421 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-145587 | https://github.com/earendil-works/pi/issues/4665 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-145763 | https://github.com/earendil-works/pi-mono/pull/4243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146063 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146095 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146267 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146299 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146580 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146612 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146815 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-146847 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147068 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147100 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147304 | https://github.com/earendil-works/pi/issues/4650 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147363 | https://github.com/earendil-works/pi/issues/4652 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147422 | https://github.com/earendil-works/pi/issues/4653 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147601 | https://github.com/earendil-works/pi/issues/4623 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147738 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-147998 | https://github.com/earendil-works/pi/issues/4484 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-148215 | https://github.com/earendil-works/pi-mono/pull/4541 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-148413 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-148445 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-148621 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-148696 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-148985 | https://github.com/earendil-works/pi/issues/4587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-149211 | https://github.com/earendil-works/pi/issues/4619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-149438 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-149470 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-149726 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-150281 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-150357 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-150494 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-150716 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-150880 | https://github.com/earendil-works/pi/pull/4458 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-151133 | https://github.com/earendil-works/pi/issues/4519 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-151393 | https://github.com/earendil-works/pi/issues/4492 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-151538 | https://github.com/earendil-works/pi/issues/4508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-151811 | https://github.com/earendil-works/pi/issues/4559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-151966 | https://github.com/earendil-works/pi/issues/4534 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-152114 | https://github.com/earendil-works/pi/issues/4553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-152291 | https://github.com/earendil-works/pi/issues/4583 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-152470 | https://github.com/earendil-works/pi/issues/4510 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-152715 | https://github.com/earendil-works/pi/issues/4503 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-152855 | https://github.com/earendil-works/pi/issues/4429 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-152988 | https://github.com/earendil-works/pi/issues/4433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-153216 | https://github.com/earendil-works/pi-mono/pull/4426 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-153611 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-153813 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-153947 | https://github.com/earendil-works/pi/issues/4333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-154072 | https://github.com/earendil-works/pi/issues/4289 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-154261 | https://github.com/earendil-works/pi/issues/4280 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-154420 | earendil-works/pi-mono | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-154449 | @earendil-works/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-154685 | @earendil-works/pi-coding-agent | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-155510 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-155959 | https://github.com/earendil-works/pi-mono/pull/4244 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-156127 | https://github.com/earendil-works/pi-mono/pull/4162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-156969 | https://github.com/earendil-works/pi-mono/pull/4234 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-157415 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-157547 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-233030 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-233178 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-233958 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73627453 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73720503 | dist/modes/interactive/components/earendil-announcement.js | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721061 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721096 | init_earendil_announcement | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721190 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721228 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721391 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-74273486 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-74278829 | init_earendil_announcement | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-658 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-1138 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-1205 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-1276 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-1383 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-1813 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-1917 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package.json@byte-306 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/index.ts@byte-568 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/index.ts@byte-1194 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/docs/containerization.md@byte-1147 | https://github.com/earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-darwin-arm64.tar.gz!diffex/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| generated-declarations!packages/coding-agent/dist/migrations.d.ts@byte-553 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| generated-declarations!packages/coding-agent/dist/utils/child-process.d.ts@byte-1068 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| generated-declarations!packages/coding-agent/dist/modes/interactive/components/earendil-announcement.d.ts@byte-71 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| generated-declarations!packages/coding-agent/dist/modes/interactive/components/earendil-announcement.d.ts@byte-163 | earendil-announcement.d.ts.map | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | + +## Artifact checksums + +| Archive | SHA-256 | +|---|---| +| diffexai-diffex-0.2.0.tgz | 2e4a15530c8c3fca0ec87dd2c1e6b12a9c7ddb13dd2155bfc18d4b991b2cdcb8 | +| diffexai-diffex-agent-core-0.2.0.tgz | 10a10787c5958f3599790741de1e3a0d5b45f2bf9caae4f8bd03390cf7e30508 | +| diffexai-diffex-ai-0.2.0.tgz | f268bba416eef7a8ba8dc977cf4ad3443f1037d82bede351334df9abf00a7e30 | +| diffexai-diffex-client-0.2.0.tgz | 2f87cace71c708ed98a51f971c9c2e854ef820224eff4c6ca199003e96052e0b | +| diffexai-diffex-coding-agent-server-0.2.0.tgz | f70cfde49772a7da4a846d1d084e0a75249e2759036836e4fec20362661a638b | +| diffexai-diffex-harness-state-0.2.0.tgz | 9235d38d4efb96370d7da95ccca3666b0152e347f18defb9646e7dcb8b8f37ae | +| diffexai-diffex-protocol-0.2.0.tgz | 1bd0590a817451289475a8b2c9b15d3e36ca11db3790f9a98be7123de3ad6816 | +| diffexai-diffex-server-0.2.0.tgz | 48d7a28a526c35fa032095cf79d302f06f625027fe6ae185925dbd921fd7c34d | +| diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz | d23826ab601981f1782bb156b907f4398f0a9e435e98c052dd97194a18da6b2b | +| diffexai-diffex-telemetry-0.2.0.tgz | 0f846a375378b6c795c44f9f57f9d89672423ef9a24e04160be69d10ac3a6afb | +| diffexai-diffex-tui-0.2.0.tgz | 73f7bdbb9b7e16be100ff6d82a1292df34f805adec3249dde082e90066b1f2de | +| diffex-phase1-source.tar.gz | baa2fc37d1557d3dcac05b5e0fc5cdf61d3f1d90e5a0ffe19d0c6197463a59ca | +| diffex-darwin-arm64.tar.gz | cefa657594e68594ba9244c23bb7ad750a9168d4ba4250377b6e6c47d9f7405d | From e96184d57f05d9bbfef6896f08314b2bba89adb1 Mon Sep 17 00:00:00 2001 From: Jay Yu Date: Wed, 9 Sep 2026 23:56:11 -0400 Subject: [PATCH 4/6] fix(coding-agent): remove false affiliation --- packages/coding-agent/package.json | 4 +- .../modes/interactive/assets/clankolas.png | Bin 539053 -> 0 bytes .../components/earendil-announcement.ts | 48 ------------------ .../src/modes/interactive/interactive-mode.ts | 12 ----- .../test/secondary-dialogs.test.ts | 14 ----- scripts/build-binaries.sh | 2 - 6 files changed, 2 insertions(+), 78 deletions(-) delete mode 100644 packages/coding-agent/src/modes/interactive/assets/clankolas.png delete mode 100644 packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts diff --git a/packages/coding-agent/package.json b/packages/coding-agent/package.json index 18b5e5ac5..ed8c41395 100644 --- a/packages/coding-agent/package.json +++ b/packages/coding-agent/package.json @@ -40,8 +40,8 @@ "clean": "shx rm -rf dist", "build": "tsgo -p tsconfig.build.json && shx chmod +x dist/cli.js dist/rpc-entry.js && npm run copy-assets", "build:binary": "npm --prefix ../harness-state run build && npm --prefix ../tui run build && npm --prefix ../telemetry run build && npm --prefix ../harness-trace run build && npm --prefix ../evolution run build && npm --prefix ../ai run build && npm --prefix ../agent run build && npm --prefix ../protocol run build && npm --prefix ../client run build && npm run build && bun build --compile --no-compile-autoload-bunfig ./dist/bun/cli.js ./src/utils/image-resize-worker.ts --outfile dist/pi && npm run copy-binary-assets", - "copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/modes/interactive/assets && shx cp src/modes/interactive/assets/*.png dist/modes/interactive/assets/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/ && shx mkdir -p dist/vendor && shx cp -r ../harness-trace/dist dist/vendor/harness-trace && shx cp -r ../evolution/dist dist/vendor/evolution", - "copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/assets && shx cp src/modes/interactive/assets/*.png dist/assets/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/", + "copy-assets": "shx mkdir -p dist/modes/interactive/theme && shx cp src/modes/interactive/theme/*.json dist/modes/interactive/theme/ && shx mkdir -p dist/core/export-html/vendor && shx cp src/core/export-html/template.html src/core/export-html/template.css src/core/export-html/template.js dist/core/export-html/ && shx cp src/core/export-html/vendor/*.js dist/core/export-html/vendor/ && shx mkdir -p dist/vendor && shx cp -r ../harness-trace/dist dist/vendor/harness-trace && shx cp -r ../evolution/dist dist/vendor/evolution", + "copy-binary-assets": "shx cp package.json dist/ && shx cp README.md dist/ && shx cp CHANGELOG.md dist/ && shx mkdir -p dist/theme && shx cp src/modes/interactive/theme/*.json dist/theme/ && shx mkdir -p dist/export-html/vendor && shx cp src/core/export-html/template.html dist/export-html/ && shx cp src/core/export-html/vendor/*.js dist/export-html/vendor/ && shx cp -r docs dist/ && shx cp -r examples dist/ && shx cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm dist/", "test": "vitest --run", "shrinkwrap": "node ../../scripts/generate-coding-agent-shrinkwrap.mjs", "prepublishOnly": "npm run clean && npm run build && npm run shrinkwrap" diff --git a/packages/coding-agent/src/modes/interactive/assets/clankolas.png b/packages/coding-agent/src/modes/interactive/assets/clankolas.png deleted file mode 100644 index d3dc65da9c17bf964a940e29032514c56271b3fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 539053 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

P|~99~;#fs>D1R7k-Qs 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

BW3PFm8&so8jlW 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

L4%gfHh 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∓uW8?<8?4)qQ)TK_n!O1Rg6ix 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 theme.fg("muted", text) }, - { maxWidthCells: 56, filename: IMAGE_FILENAME }, - ), - ); - } - } -} diff --git a/packages/coding-agent/src/modes/interactive/interactive-mode.ts b/packages/coding-agent/src/modes/interactive/interactive-mode.ts index de861ebbb..1758fc050 100644 --- a/packages/coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/coding-agent/src/modes/interactive/interactive-mode.ts @@ -149,7 +149,6 @@ import { diffexIntroTextBold, } from "./components/diffex-welcome.ts"; import { DynamicBorder } from "./components/dynamic-border.ts"; -import { EarendilAnnouncementComponent } from "./components/earendil-announcement.ts"; import { type EvolutionMenuClient, EvolutionMenuComponent } from "./components/evolution-menu.ts"; import { ExtensionEditorComponent } from "./components/extension-editor.ts"; import { ExtensionInputComponent } from "./components/extension-input.ts"; @@ -3481,11 +3480,6 @@ export class InteractiveMode { this.editor.setText(""); return; } - if (text === "/dementedelves") { - this.handleDementedDelves(); - this.editor.setText(""); - return; - } if (text === "/resume") { this.showSessionSelector(); this.editor.setText(""); @@ -7375,12 +7369,6 @@ export class InteractiveMode { this.ui.requestRender(); } - private handleDementedDelves(): void { - this.chatContainer.addChild(new Spacer(1)); - this.chatContainer.addChild(new EarendilAnnouncementComponent()); - this.ui.requestRender(); - } - private handleDaxnuts(): void { this.chatContainer.addChild(new Spacer(1)); this.chatContainer.addChild(new DaxnutsComponent(this.ui)); diff --git a/packages/coding-agent/test/secondary-dialogs.test.ts b/packages/coding-agent/test/secondary-dialogs.test.ts index de25114ed..1722103e5 100644 --- a/packages/coding-agent/test/secondary-dialogs.test.ts +++ b/packages/coding-agent/test/secondary-dialogs.test.ts @@ -2,7 +2,6 @@ import { getGlyphs, setKeybindings, TuiMainScreen } from "@diffexai/diffex-tui"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { VirtualTerminal } from "../../tui/test/virtual-terminal.ts"; import { KeybindingsManager } from "../src/core/keybindings.ts"; -import { EarendilAnnouncementComponent } from "../src/modes/interactive/components/earendil-announcement.ts"; import { ExtensionEditorComponent } from "../src/modes/interactive/components/extension-editor.ts"; import { ExtensionInputComponent } from "../src/modes/interactive/components/extension-input.ts"; import { ExtensionSelectorComponent } from "../src/modes/interactive/components/extension-selector.ts"; @@ -114,17 +113,4 @@ describe("secondary dialogs", () => { expect(output).toHaveLength(10); expect(output.every((line) => Array.from(line).length <= 60)).toBe(true); }); - - it("renders the Earendil announcement without a box", () => { - const component = new EarendilAnnouncementComponent(); - - const output = renderPlain(component, 80); - const text = output.join("\n"); - - expect(output[0]).toContain("Diffex has joined Earendil"); - expect(text).toContain("Read the blog post:"); - expect(text).toContain("https://mariozechner.at/posts/2026-04-08-ive-sold-out/"); - expect(output.some((line) => /^\s*─+\s*$/.test(line))).toBe(false); - expect(output.at(-1)).not.toBe(""); - }); }); diff --git a/scripts/build-binaries.sh b/scripts/build-binaries.sh index a849a31b0..ff2a8b76b 100755 --- a/scripts/build-binaries.sh +++ b/scripts/build-binaries.sh @@ -189,8 +189,6 @@ for platform in "${PLATFORMS[@]}"; do cp ../../node_modules/@silvia-odwyer/photon-node/photon_rs_bg.wasm "$OUTPUT_DIR/$platform/" mkdir -p "$OUTPUT_DIR/$platform/theme" cp dist/modes/interactive/theme/*.json "$OUTPUT_DIR/$platform/theme/" - mkdir -p "$OUTPUT_DIR/$platform/assets" - cp dist/modes/interactive/assets/* "$OUTPUT_DIR/$platform/assets/" cp -r dist/core/export-html "$OUTPUT_DIR/$platform/" cp -r docs "$OUTPUT_DIR/$platform/" cp -r examples "$OUTPUT_DIR/$platform/" From d83e36d594795d1f8397c086231d136987a1be62 Mon Sep 17 00:00:00 2001 From: Jay Yu Date: Wed, 9 Sep 2026 23:57:15 -0400 Subject: [PATCH 5/6] docs(coding-agent): close identity handoff --- docs/identity-phase1-handoff.md | 54 +++++++++----- identity-residual-allowlist.md | 124 ++++++++++---------------------- 2 files changed, 75 insertions(+), 103 deletions(-) diff --git a/docs/identity-phase1-handoff.md b/docs/identity-phase1-handoff.md index 122bf07f4..3d930af0c 100644 --- a/docs/identity-phase1-handoff.md +++ b/docs/identity-phase1-handoff.md @@ -1,7 +1,7 @@ # Phase 1 identity handoff -Status: incomplete pending operational provisioning, final contact/backend identities, and announcement approval. -Do not begin distribution cutover from this document until the open gates below are closed. +Status: phase 1 complete within the owner-approved scope below. +Distribution and backend cutover remain later-phase work. The source migration is based on `4d5859e71143d3c1ba29fa7df4e2068087ba2322`. ## Confirmed identities @@ -17,6 +17,11 @@ The source migration is based on `4d5859e71143d3c1ba29fa7df4e2068087ba2322`. | Product author | DiffexAI | | Legal copyright owner | Luntraa, Inc. | | Website | `https://diffex.ai/`, verified in GitHub organization metadata | +| Diffex API/Radius hostnames | None, confirmed by owner | +| OAuth application names | None, confirmed by owner | + +Diffex and Luntraa, Inc. are unrelated to Earendil. +The incorrect affiliation announcement, hidden command, component, and exclusive image were removed. The package migration changes only the scope except for the coding-agent CLI. The CLI uses the short package name shown below. @@ -51,16 +56,17 @@ The organization has no staff teams, and organization-wide two-factor authentica The API lists no members or outside collaborators with two-factor authentication disabled. The only repository environment is `diffex-model-upload`; it contains no secrets. There are no repository Actions secrets. -Organization-secret inventory requires an additional `admin:org` token scope and returned HTTP 403. +Organization-secret inventory returned HTTP 403 and was subsequently skipped by owner instruction. Ruleset inspection returned HTTP 403 because this private repository's plan does not support the feature. The organization-installation API lists `chatgpt-codex-connector` and `render`, both with selected-repository access. -Their selected repository lists and downstream deployment configuration remain unverified. +Their selected repository lists and downstream deployment configuration were not verified; production inventory is an owner-approved skip. The `main` branch is unprotected. The private-vulnerability-reporting endpoint returned HTTP 404, so that reporting channel is not verified. The organization lists `hello@diffex.ai` as its public email, but this does not verify a security mailbox or delivery. All eleven public package names returned HTTP 404 from the npm registry. -The local npm authentication check returned HTTP 401, so npm organization ownership and two-factor authentication remain unverified. -Browser discovery returned no connected browsers, so an existing npm web session could not be checked. +The initial local npm authentication check returned HTTP 401. +The owner subsequently confirmed all npm requirements are verified and instructed us to skip npm login and further ownership/2FA checks. +This is owner-provided verification, not a successful local account check. ## Publication hold and consumer inventory @@ -69,24 +75,32 @@ Keep it disabled through phase 1 and phase 2. `Dockerfile.runtime` already labels the canonical repository and uses Node 24 for both stages. `docs/cloud-runtime.md` identifies the target image and the `DAYTONA_SANDBOX_SNAPSHOT` consumer setting. No production image digest or snapshot value is stored in this repository. -Daytona registry credentials, snapshot inventory, deployment allowlists, and the currently tested production digest require operator evidence. +The owner instructed us to skip production image, Daytona snapshot, credential, and deployment-allowlist inventory. Do not change those consumers in phase 1. Phase 3 configures the trusted publisher for every public package with repository `diffexai/diffex`, workflow `build-binaries.yml`, environment `npm-publish`, and action `npm publish`. Do not bootstrap packages, configure publication credentials, publish npm packages, create release assets, publish GHCR images, or activate self-update in this phase. -## Open gates +## Owner-approved scope adjustments + +These decisions were recorded in `/Users/jialeyu/Projects/temp/release/earendil-works-to-diffexai-diffex.md` on 2026-09-09 local time. +Diffex will not be an open source project. +The following exceptions supersede the original plan's operational gates. -| Step | Required evidence or decision | +| Step | Final disposition | |---|---| -| 1, 15 | Final security mailbox, staff team/token name, support identity, API/Radius hostnames, and OAuth identity names | -| 2 | npm organization control, owners and 2FA; provisioned security mailbox and staff team; organization 2FA policy | -| 3 | Organization-secret names and owners, App repository selections, security-reporting configuration, and remaining integrations | -| 4 | Approved staff authorization endpoint and token, provisioned non-publication integrations, positive and negative authorization tests | -| 11 | Operator inventory of the current production image, Daytona snapshot, credentials, and deployment allowlists | -| 12 | Approval to replace or remove the intentional company announcement; verified security contact | -| 13 | Resolve the active findings in `identity-residual-allowlist.md` and repeat final source/artifact scans | -| 15 | Close all open gates and provide the final operational identifiers to phase 2 | +| 1, 15 | No API/Radius hostnames or OAuth application names exist; security/support identities skipped | +| 2 | npm requirements verified by owner; no npm login; security mailbox and staff team/member provisioning skipped | +| 3 | Organization-secret inventory skipped; security-reporting and production integration checks deferred | +| 4 | Staff authorization/team/token migration and its tests skipped; existing workflow unchanged | +| 11 | Production inventory skipped; image publication remains disabled | +| 12 | Announcement removal approved and implemented; security/support contact work skipped | +| 13 | Exact retained security/staff references classified as owner-approved skips; other residuals reviewed separately | +| 15 | Confirmed names and explicit absent/skipped identities recorded in this handoff | + +`SECURITY.md` and `.github/workflows/issue-analysis.yml` retain inherited operational references under these explicit skips. +Those references do not establish a relationship between Diffex or Luntraa and Earendil. +Their exact occurrences and retirement conditions appear in `identity-residual-allowlist.md`. ## Local verification @@ -97,8 +111,12 @@ Lockfiles were regenerated with Node 24.13.0 and npm 11.15.0, followed by the re Using npm 10 would drop libc metadata, so use the documented newer npm toolchain for regeneration. The initial non-E2E run encountered sandbox denials for loopback and Unix sockets. The complete `./test.sh` run passed after granting the local socket access required by its mock servers. -The source archive was created from commit `76eef7af0` and passed its embedded model-data validation. +The source archive passed its embedded model-data validation. +The exact verified source revision and archive checksums are recorded in `identity-residual-allowlist.md`. Generated declarations, the source archive, and the macOS standalone archive passed stale active-package identity scans. The standalone binary returned version `0.2.0` and displayed help when launched from `/tmp` with an isolated agent directory and offline mode. Exact artifact residuals and their byte offsets are recorded in `identity-residual-allowlist.md`. The local Docker daemon is not running, so no container build or effective-image-label inspection was performed. +After announcement removal, `npm run check`, all five remaining secondary-dialog tests, and a clean offline build passed. +An isolated offline TUI reproduced the announcement before removal and verified that the old command no longer displays it afterward. +All eleven npm packs, generated declarations, the source archive, and the standalone archive were regenerated and rescanned after removal. diff --git a/identity-residual-allowlist.md b/identity-residual-allowlist.md index 622d04c30..0678ed936 100644 --- a/identity-residual-allowlist.md +++ b/identity-residual-allowlist.md @@ -1,17 +1,34 @@ # Identity residual allowlist -Source revision: `76eef7af077298d1c7ab7a6b749e3fd2cc455c6c`. +Source revision: `e96184d57f05d9bbfef6896f08314b2bba89adb1`. Review date: 2026-09-10 UTC. This records exact retained occurrences, not wildcard exemptions. The unresolved table is a blocking inventory and does not authorize those identities. This audit document and the phase-1 handoff contain descriptive historical identity text and are not executable identity configuration. +Diffex and Luntraa are unrelated to Earendil. +Security/staff exceptions below were explicitly approved by the owner; they are active inherited references, not historical provenance. + ## Reviewed source occurrences | Exact path and line | Exact retained string | Classification | Rationale | Retirement condition | |---|---|---|---|---| +| .github/workflows/issue-analysis.yml:17 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:18 | earendil-works | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:19 | earendil-works/staff`. | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:78 | secrets.EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:176 | core.setFailed('EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:182 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/${encodeURIComponent(username)} | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:194 | earendil-works/staff | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:202 | earendil-works/staff | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:210 | earendil-works/staff | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:213 | console.log(`earendil-works/staff | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| .github/workflows/issue-analysis.yml:217 | earendil-works/staff | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | | LICENSE:189 | Copyright 2026 Luntraa, Inc. | Legal attribution | Confirmed copyright owner | Retain while legally required | | README.md:29 | Harness](https://github.com/earendil-works/pi). | Upstream history | Original upstream source or issue provenance | Retain while the referenced upstream history remains relevant | +| SECURITY.md:29 | security@earendil.com | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| SECURITY.md:86 | Earendil | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | +| SECURITY.md:87 | Earendil-operated | Owner-approved skip | Owner explicitly deferred security contacts and staff authorization because Diffex is private; this is not an affiliation claim | Replace or remove if the owner resumes security-contact or staff-workflow migration | | package-lock.json:778 | node_modules/@earendil-works/gondolin": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | | package-lock.json:780 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | | package-lock.json:796 | @earendil-works/gondolin-krun-runner-darwin-arm64": | External dependency | Published third-party Gondolin identity; not a Diffex-owned package | Remove only when the dependency is intentionally replaced | @@ -930,30 +947,8 @@ This audit document and the phase-1 handoff contain descriptive historical ident | Exact path and line | Exact string | Classification | Required action | Retirement condition | |---|---|---|---|---| -| .github/workflows/issue-analysis.yml:17 | EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:18 | earendil-works | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:19 | earendil-works/staff`. | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:78 | secrets.EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:176 | core.setFailed('EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:182 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/${encodeURIComponent(username)} | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:194 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:202 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:210 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:213 | console.log(`earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| .github/workflows/issue-analysis.yml:217 | earendil-works/staff | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| SECURITY.md:29 | security@earendil.com | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| SECURITY.md:86 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| SECURITY.md:87 | Earendil-operated | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts:26 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts:30 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/src/modes/interactive/interactive-mode.ts:152 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/src/modes/interactive/interactive-mode.ts:152 | ./components/earendil-announcement.ts | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/src/modes/interactive/interactive-mode.ts:7380 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/test/secondary-dialogs.test.ts:5 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/test/secondary-dialogs.test.ts:5 | ../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/test/secondary-dialogs.test.ts:118 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/test/secondary-dialogs.test.ts:119 | EarendilAnnouncementComponent | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | -| packages/coding-agent/test/secondary-dialogs.test.ts:124 | Earendil | Unresolved active identity | Requires the operational replacement or announcement approval requested from the owner | Replace before phase 1 completes | + +None outside the exact owner-approved skips above. ## Artifact verification @@ -966,19 +961,14 @@ Docker image inspection is unavailable because no local Docker daemon is running Artifacts were built from the source revision above. Byte offsets identify exact occurrences without relying on generated line wrapping. +The source archive includes the preceding audit and handoff; those two exact descriptive documents are excluded to avoid recursively auditing previous audit output. Rows marked unresolved are blocking findings, not allowlist exceptions. | Artifact, member, and byte offset | Exact string | Classification | Rationale and retirement condition | |---|---|---|---| | diffexai-diffex-0.2.0.tgz!package/dist/utils/changelog.js@byte-287 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | | diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.js@byte-879 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js@byte-744 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js@byte-911 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js@byte-1438 | earendil-announcement.js.map | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffexai-diffex-0.2.0.tgz!package/dist/core/tools/find.js@byte-9344 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js@byte-4424 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js@byte-4462 | ./components/earendil-announcement.js | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js@byte-287670 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffexai-diffex-0.2.0.tgz!package/dist/migrations.js@byte-2912 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | @@ -994,22 +984,8 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffexai-diffex-0.2.0.tgz!package/dist/utils/changelog.js.map@byte-9908 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | | diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.d.ts.map@byte-2459 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.js.map@byte-5033 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-21 | earendil-announcement.d.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-77 | ../../../../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-1080 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts.map@byte-1245 | Earendil\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-21 | earendil-announcement.js | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-75 | ../../../../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-2483 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.js.map@byte-2648 | Earendil\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffexai-diffex-0.2.0.tgz!package/dist/core/tools/find.d.ts.map@byte-11427 | https://github.com/earendil-works/pi/issues/5960\n\t\t\t\t\t\tlet | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-0.2.0.tgz!package/dist/core/tools/find.js.map@byte-22811 | https://github.com/earendil-works/pi/issues/5960\n\t\t\t\t\t\tlet | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.d.ts.map@byte-16413 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.d.ts.map@byte-16452 | ./components/earendil-announcement.ts\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.d.ts.map@byte-293908 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js.map@byte-254972 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js.map@byte-255011 | ./components/earendil-announcement.ts\ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/interactive-mode.js.map@byte-532467 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffexai-diffex-0.2.0.tgz!package/dist/migrations.d.ts.map@byte-3321 | https://github.com/earendil-works/pi-mono/issues/320\n | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-0.2.0.tgz!package/dist/migrations.js.map@byte-11595 | https://github.com/earendil-works/pi-mono/issues/320\n | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-0.2.0.tgz!package/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | @@ -1565,8 +1541,6 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffexai-diffex-0.2.0.tgz!package/docs/containerization.md@byte-1147 | https://github.com/earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffexai-diffex-0.2.0.tgz!package/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffexai-diffex-0.2.0.tgz!package/dist/utils/child-process.d.ts@byte-1068 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts@byte-71 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffexai-diffex-0.2.0.tgz!package/dist/modes/interactive/components/earendil-announcement.d.ts@byte-163 | earendil-announcement.d.ts.map | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/index.ts@byte-568 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffexai-diffex-0.2.0.tgz!package/examples/extensions/gondolin/index.ts@byte-1194 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffexai-diffex-0.2.0.tgz!package/dist/migrations.d.ts@byte-553 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | @@ -1590,22 +1564,22 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.js@byte-5201 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.d.ts.map@byte-8338 | https://github.com/earendil-works/pi/issues/5825.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.js.map@byte-39247 | https://github.com/earendil-works/pi/issues/5825.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-867 | EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-924 | earendil-works | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-1048 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-3628 | secrets.EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7583 | EARENDIL_ORG_READ_TOKEN | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7777 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/ | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8326 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8597 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8954 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9053 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9262 | earendil-works/staff | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-867 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-924 | earendil-works | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-1048 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-3628 | secrets.EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7583 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7777 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/ | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8326 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8597 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8954 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9053 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9262 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | | diffex-phase1-source.tar.gz!diffex-0.2.0/LICENSE@byte-10777 | Luntraa | Legal attribution | Confirmed copyright owner; retain while legally required | | diffex-phase1-source.tar.gz!diffex-0.2.0/README.md@byte-1551 | https://github.com/earendil-works/pi | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-1421 | security@earendil.com | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4233 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4262 | Earendil-operated | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-1421 | security@earendil.com | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4233 | Earendil | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4262 | Earendil-operated | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | | diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25698 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25780 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26260 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | @@ -2439,19 +2413,9 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package.json@byte-306 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/core/tools/find.ts@byte-8995 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/migrations.ts@byte-2629 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts@byte-746 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/components/earendil-announcement.ts@byte-899 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/interactive-mode.ts@byte-5956 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/interactive-mode.ts@byte-5994 | ./components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/modes/interactive/interactive-mode.ts@byte-254060 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/changelog.ts@byte-391 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/child-process.ts@byte-1531 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/changelog.test.ts@byte-1331 | https://github.com/earendil-works/pi-mono/pull/5167 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-288 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-326 | ../src/modes/interactive/components/earendil-announcement.ts | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-4308 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-4378 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/secondary-dialogs.test.ts@byte-4541 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts@byte-304 | https://github.com/earendil-works/pi-mono/issues/2791 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3302 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | @@ -3079,15 +3043,7 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-233030 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | | diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-233178 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | | diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-233958 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73627453 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73720503 | dist/modes/interactive/components/earendil-announcement.js | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721061 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721096 | init_earendil_announcement | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721190 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721228 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73721391 | Earendil | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-74273486 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-74278829 | init_earendil_announcement | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | +| diffex-darwin-arm64.tar.gz!diffex/diffex@byte-73627059 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | | diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | diffex-darwin-arm64.tar.gz!diffex/examples/extensions/gondolin/package-lock.json@byte-658 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | @@ -3104,14 +3060,12 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffex-darwin-arm64.tar.gz!diffex/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | | generated-declarations!packages/coding-agent/dist/migrations.d.ts@byte-553 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | generated-declarations!packages/coding-agent/dist/utils/child-process.d.ts@byte-1068 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| generated-declarations!packages/coding-agent/dist/modes/interactive/components/earendil-announcement.d.ts@byte-71 | EarendilAnnouncementComponent | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | -| generated-declarations!packages/coding-agent/dist/modes/interactive/components/earendil-announcement.d.ts@byte-163 | earendil-announcement.d.ts.map | Unresolved active identity | Requires operational replacement or announcement approval before phase 1 completes | ## Artifact checksums | Archive | SHA-256 | |---|---| -| diffexai-diffex-0.2.0.tgz | 2e4a15530c8c3fca0ec87dd2c1e6b12a9c7ddb13dd2155bfc18d4b991b2cdcb8 | +| diffexai-diffex-0.2.0.tgz | 732d45c014368df143363c3825d96a782d7a0cbd3c69cb9da604278ad464bae9 | | diffexai-diffex-agent-core-0.2.0.tgz | 10a10787c5958f3599790741de1e3a0d5b45f2bf9caae4f8bd03390cf7e30508 | | diffexai-diffex-ai-0.2.0.tgz | f268bba416eef7a8ba8dc977cf4ad3443f1037d82bede351334df9abf00a7e30 | | diffexai-diffex-client-0.2.0.tgz | 2f87cace71c708ed98a51f971c9c2e854ef820224eff4c6ca199003e96052e0b | @@ -3122,5 +3076,5 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz | d23826ab601981f1782bb156b907f4398f0a9e435e98c052dd97194a18da6b2b | | diffexai-diffex-telemetry-0.2.0.tgz | 0f846a375378b6c795c44f9f57f9d89672423ef9a24e04160be69d10ac3a6afb | | diffexai-diffex-tui-0.2.0.tgz | 73f7bdbb9b7e16be100ff6d82a1292df34f805adec3249dde082e90066b1f2de | -| diffex-phase1-source.tar.gz | baa2fc37d1557d3dcac05b5e0fc5cdf61d3f1d90e5a0ffe19d0c6197463a59ca | -| diffex-darwin-arm64.tar.gz | cefa657594e68594ba9244c23bb7ad750a9168d4ba4250377b6e6c47d9f7405d | +| diffex-phase1-source.tar.gz | dc1cb7889f456343383147c5fab8ef90aea028062910c94c92108d8f43e154b2 | +| diffex-darwin-arm64.tar.gz | de2581b2ec6036e0b203c53a1d43b82d9e5bbb494aff286e15161e30ba7afa6b | From ff2250127d1db8af8e78e6d8be1517c4a912e4f9 Mon Sep 17 00:00:00 2001 From: Jay Yu Date: Thu, 10 Sep 2026 08:37:39 -0400 Subject: [PATCH 6/6] docs(coding-agent): describe functional gates --- .github/workflows/runtime-image.yml | 2 +- docs/cloud-runtime.md | 4 +- ...-phase1-handoff.md => identity-handoff.md} | 36 +- identity-residual-allowlist.md | 1862 ++++++++--------- 4 files changed, 952 insertions(+), 952 deletions(-) rename docs/{identity-phase1-handoff.md => identity-handoff.md} (84%) diff --git a/.github/workflows/runtime-image.yml b/.github/workflows/runtime-image.yml index 31f2b6021..02823b44e 100644 --- a/.github/workflows/runtime-image.yml +++ b/.github/workflows/runtime-image.yml @@ -32,7 +32,7 @@ concurrency: jobs: build: - # Phase 1 identity migration hold. Phase 3 validates and re-enables publication. + # Publication is paused until the runtime image and deployment consumers are validated. if: ${{ false }} runs-on: ubuntu-latest permissions: diff --git a/docs/cloud-runtime.md b/docs/cloud-runtime.md index ce110ace1..5c03552e3 100644 --- a/docs/cloud-runtime.md +++ b/docs/cloud-runtime.md @@ -26,8 +26,8 @@ Only Daytona's opaque placeholder enters the sandbox environment, and the real p `Dockerfile.runtime` produces the AMD64 image used to create the Daytona sandbox snapshot. The runtime-image workflow is disabled during the identity migration, including manual dispatches. -Phase 3 re-enables validation and immutable `ghcr.io/diffexai/diffex-runtime:sha-` publication after reviewing the image and its consumers. -Keep production on its existing tested image and Daytona snapshot until that phase completes. +Re-enable the workflow for validation and immutable `ghcr.io/diffexai/diffex-runtime:sha-` publication after reviewing the image and its consumers. +Keep production on its existing tested image and Daytona snapshot until the replacement image and snapshot pass release validation. Before a cloud release, register GHCR with Daytona, create a Daytona snapshot from that exact immutable image tag or digest, and set `DAYTONA_SANDBOX_SNAPSHOT` to the resulting snapshot name. Do not use a floating image tag for production. diff --git a/docs/identity-phase1-handoff.md b/docs/identity-handoff.md similarity index 84% rename from docs/identity-phase1-handoff.md rename to docs/identity-handoff.md index 3d930af0c..21e059c5d 100644 --- a/docs/identity-phase1-handoff.md +++ b/docs/identity-handoff.md @@ -1,7 +1,7 @@ -# Phase 1 identity handoff +# Product identity handoff -Status: phase 1 complete within the owner-approved scope below. -Distribution and backend cutover remain later-phase work. +Status: source identity migration complete within the owner-approved scope below. +Distribution and backend cutover remain separate release work. The source migration is based on `4d5859e71143d3c1ba29fa7df4e2068087ba2322`. ## Confirmed identities @@ -29,17 +29,17 @@ Private packages retain their existing suffixes under the new scope. | Workspace | Final package | Publication | |---|---|---| -| `packages/agent` | `@diffexai/diffex-agent-core` | Public, phase 3 | -| `packages/ai` | `@diffexai/diffex-ai` | Public, phase 3 | -| `packages/client` | `@diffexai/diffex-client` | Public, phase 3 | -| `packages/coding-agent` | `@diffexai/diffex` | Public, phase 3 | -| `packages/coding-agent-server` | `@diffexai/diffex-coding-agent-server` | Public, phase 3 | -| `packages/harness-state` | `@diffexai/diffex-harness-state` | Public, phase 3 | -| `packages/protocol` | `@diffexai/diffex-protocol` | Public, phase 3 | -| `packages/server` | `@diffexai/diffex-server` | Public, phase 3 | -| `packages/session-backends/sqlite-node` | `@diffexai/diffex-session-backend-sqlite-node` | Public, phase 3 | -| `packages/telemetry` | `@diffexai/diffex-telemetry` | Public, phase 3 | -| `packages/tui` | `@diffexai/diffex-tui` | Public, phase 3 | +| `packages/agent` | `@diffexai/diffex-agent-core` | Public; publication deferred | +| `packages/ai` | `@diffexai/diffex-ai` | Public; publication deferred | +| `packages/client` | `@diffexai/diffex-client` | Public; publication deferred | +| `packages/coding-agent` | `@diffexai/diffex` | Public; publication deferred | +| `packages/coding-agent-server` | `@diffexai/diffex-coding-agent-server` | Public; publication deferred | +| `packages/harness-state` | `@diffexai/diffex-harness-state` | Public; publication deferred | +| `packages/protocol` | `@diffexai/diffex-protocol` | Public; publication deferred | +| `packages/server` | `@diffexai/diffex-server` | Public; publication deferred | +| `packages/session-backends/sqlite-node` | `@diffexai/diffex-session-backend-sqlite-node` | Public; publication deferred | +| `packages/telemetry` | `@diffexai/diffex-telemetry` | Public; publication deferred | +| `packages/tui` | `@diffexai/diffex-tui` | Public; publication deferred | | `packages/evals` | `@diffexai/diffex-evals` | Private | | `packages/evolution` | `@diffexai/diffex-evolution` | Private | | `packages/harness-trace` | `@diffexai/diffex-harness-trace` | Private | @@ -71,15 +71,15 @@ This is owner-provided verification, not a successful local account check. ## Publication hold and consumer inventory `.github/workflows/runtime-image.yml` has an unconditional false job condition that also blocks manual dispatch. -Keep it disabled through phase 1 and phase 2. +Keep it disabled until the runtime image and deployment consumers are validated. `Dockerfile.runtime` already labels the canonical repository and uses Node 24 for both stages. `docs/cloud-runtime.md` identifies the target image and the `DAYTONA_SANDBOX_SNAPSHOT` consumer setting. No production image digest or snapshot value is stored in this repository. The owner instructed us to skip production image, Daytona snapshot, credential, and deployment-allowlist inventory. -Do not change those consumers in phase 1. +Consumer changes are outside this source identity migration. -Phase 3 configures the trusted publisher for every public package with repository `diffexai/diffex`, workflow `build-binaries.yml`, environment `npm-publish`, and action `npm publish`. -Do not bootstrap packages, configure publication credentials, publish npm packages, create release assets, publish GHCR images, or activate self-update in this phase. +Before publishing, configure the trusted publisher for every public package with repository `diffexai/diffex`, workflow `build-binaries.yml`, environment `npm-publish`, and action `npm publish`. +Do not bootstrap packages, configure publication credentials, publish npm packages, create release assets, publish GHCR images, or activate self-update as part of this source identity migration. ## Owner-approved scope adjustments diff --git a/identity-residual-allowlist.md b/identity-residual-allowlist.md index 0678ed936..6dc1bbd95 100644 --- a/identity-residual-allowlist.md +++ b/identity-residual-allowlist.md @@ -4,7 +4,7 @@ Source revision: `e96184d57f05d9bbfef6896f08314b2bba89adb1`. Review date: 2026-09-10 UTC. This records exact retained occurrences, not wildcard exemptions. The unresolved table is a blocking inventory and does not authorize those identities. -This audit document and the phase-1 handoff contain descriptive historical identity text and are not executable identity configuration. +This audit document and the product identity handoff contain descriptive historical identity text and are not executable identity configuration. Diffex and Luntraa are unrelated to Earendil. Security/staff exceptions below were explicitly approved by the owner; they are active inherited references, not historical provenance. @@ -1564,935 +1564,935 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.js@byte-5201 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.d.ts.map@byte-8338 | https://github.com/earendil-works/pi/issues/5825.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | | diffexai-diffex-tui-0.2.0.tgz!package/dist/components/markdown.js.map@byte-39247 | https://github.com/earendil-works/pi/issues/5825.\n\tconst | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-867 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-924 | earendil-works | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-1048 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-3628 | secrets.EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7583 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7777 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/ | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8326 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8597 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8954 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9053 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9262 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/LICENSE@byte-10777 | Luntraa | Legal attribution | Confirmed copyright owner; retain while legally required | -| diffex-phase1-source.tar.gz!diffex-0.2.0/README.md@byte-1551 | https://github.com/earendil-works/pi | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-1421 | security@earendil.com | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4233 | Earendil | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4262 | Earendil-operated | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25698 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25780 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26260 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26327 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26398 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26505 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26935 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-27039 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-27460 | node_modules/@earendil-works/gondolin/node_modules/undici | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-180096 | packages/agent/node_modules/@earendil-works/pi-ai/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-185200 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186028 | packages/coding-agent/node_modules/@earendil-works/pi-agent-core/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186382 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/@anthropic-ai/sdk | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186995 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-833 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1516 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1727 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1981 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-2162 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-2681 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-3558 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-3812 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4091 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4411 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4551 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4583 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4815 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4922 | https://github.com/earendil-works/pi/issues/6851 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5097 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5475 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5851 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6020 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6238 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6419 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6620 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6833 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-7062 | https://github.com/earendil-works/pi/issues/6242 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8126 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8501 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8738 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8947 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9261 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9360 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9458 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9517 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9924 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-10158 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-10727 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11244 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11396 | https://github.com/earendil-works/pi/issues/4715 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11572 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3081 | @earendil-works/pi-telemetry | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3316 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3720 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3950 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4345 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4707 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4854 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5113 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5299 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5852 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5911 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6192 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6534 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6739 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6945 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7167 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7323 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7532 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7829 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8018 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8203 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8704 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9186 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9414 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9737 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9916 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10157 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10359 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10558 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10617 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10805 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11012 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11280 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11638 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11859 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11956 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-12638 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-12897 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-13100 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-13854 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14468 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14690 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14951 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15157 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15399 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15665 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16103 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16282 | https://github.com/earendil-works/pi/pull/6840 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16438 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16587 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16846 | https://github.com/earendil-works/pi/pull/6765 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-17304 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-17547 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18018 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18243 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18414 | https://github.com/earendil-works/pi/issues/6668 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18684 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18853 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19315 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19442 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19885 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-20200 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-22578 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-23284 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-23682 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24105 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24276 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24490 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24689 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24901 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25243 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25465 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25716 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25944 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26171 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26364 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26602 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-27258 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-27944 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28237 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28492 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28692 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28922 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29237 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29571 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29714 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30003 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30223 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30590 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31010 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31137 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31352 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31661 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32339 | https://github.com/earendil-works/pi/pull/6341 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32556 | https://github.com/earendil-works/pi/issues/6256 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32677 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-33198 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-33786 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34048 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34334 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34482 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34748 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34915 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35075 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35317 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35976 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36153 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36212 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36384 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36896 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37002 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37339 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37825 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38316 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38361 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38766 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38793 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39155 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39595 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39656 | @earendil-works/pi-ai/providers/anthropic | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39842 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-40101 | @earendil-works/pi-ai/api/anthropic-messages | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-40183 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-41747 | @earendil-works/pi-ai/providers/ | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-41842 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43177 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43697 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43858 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44081 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44335 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44530 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44699 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44864 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44963 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45129 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45378 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45498 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45705 | https://github.com/earendil-works/pi/issues/5860 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46195 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46385 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46549 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46724 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47012 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47213 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47454 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47674 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47887 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48423 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48641 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48834 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49073 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49233 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49451 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49843 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50061 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50211 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50396 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50537 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50743 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50965 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51174 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51405 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51759 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52076 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52227 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52409 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52600 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52753 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53245 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53476 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53742 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54208 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54571 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54810 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55020 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55284 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55431 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55648 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55802 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55960 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56180 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56414 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56730 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57076 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57306 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57547 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57775 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-58569 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-58812 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59084 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59362 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59526 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59800 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60014 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60209 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60545 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60757 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61028 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61229 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61480 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61767 | https://github.com/earendil-works/pi/issues/4485 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62013 | https://github.com/earendil-works/pi/issues/4345 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62193 | https://github.com/earendil-works/pi-mono/pull/4358 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62387 | https://github.com/earendil-works/pi-mono/pull/4354 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi/issues/4513 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-63736 | https://github.com/earendil-works/pi/issues/4563 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-63928 | https://github.com/earendil-works/pi/issues/4539 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64152 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64857 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64997 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/src/api/azure-openai-responses.ts@byte-1191 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/src/api/openai-responses-shared.ts@byte-18130 | https://github.com/earendil-works/pi/issues/6409. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/src/api/openai-responses.ts@byte-1360 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/test/openai-completions-empty-tools.test.ts@byte-402 | https://github.com/earendil-works/pi-mono/issues/ | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/ai/test/tool-call-id-normalization.test.ts@byte-356 | https://github.com/earendil-works/pi-mono/issues/1022 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/client/CHANGELOG.md@byte-262 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-1659 | https://github.com/earendil-works/pi/issues/7128 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-2379 | https://github.com/earendil-works/pi/issues/7731 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-4189 | https://github.com/earendil-works/pi/issues/7290 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-4626 | https://github.com/earendil-works/pi/issues/7030 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-8452 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-8808 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9120 | @earendil-works/pi-coding-agent/client | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9304 | https://github.com/earendil-works/pi/pull/7344 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9361 | https://github.com/earendil-works/pi/pull/7348 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9418 | https://github.com/earendil-works/pi/pull/7371 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9475 | https://github.com/earendil-works/pi/pull/7409 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9891 | https://github.com/earendil-works/pi/pull/7231 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-10087 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-10937 | https://github.com/earendil-works/pi/pull/7624 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-11414 | https://github.com/earendil-works/pi/pull/7681 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-11669 | https://github.com/earendil-works/pi/pull/7493 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12209 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12449 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12985 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13459 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13784 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13978 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi/pull/7448 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14245 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14924 | https://github.com/earendil-works/pi/issues/7684 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15238 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15496 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15753 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16117 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16291 | https://github.com/earendil-works/pi/issues/6817 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16615 | https://github.com/earendil-works/pi/issues/7064 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16674 | https://github.com/earendil-works/pi/issues/7547 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16840 | https://github.com/earendil-works/pi/issues/7572 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16987 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-17313 | https://github.com/earendil-works/pi/issues/7327 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-17515 | https://github.com/earendil-works/pi/pull/7390 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18264 | https://github.com/earendil-works/pi/issues/7333 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18405 | https://github.com/earendil-works/pi/issues/7187 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18709 | https://github.com/earendil-works/pi/issues/7292 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18966 | https://github.com/earendil-works/pi/pull/7325 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19190 | https://github.com/earendil-works/pi/issues/7319 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19437 | https://github.com/earendil-works/pi/issues/7316 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19593 | https://github.com/earendil-works/pi/issues/7301 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19652 | https://github.com/earendil-works/pi/pull/7421 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20013 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20072 | https://github.com/earendil-works/pi/issues/7113 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20131 | https://github.com/earendil-works/pi/issues/7418 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20327 | https://github.com/earendil-works/pi/issues/7153 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20477 | https://github.com/earendil-works/pi/issues/7443 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21395 | https://github.com/earendil-works/pi/issues/6768 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21646 | https://github.com/earendil-works/pi/issues/7579 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21865 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22003 | https://github.com/earendil-works/pi/pull/7656 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22205 | https://github.com/earendil-works/pi/pull/7387 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22369 | https://github.com/earendil-works/pi/pull/7435 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22626 | https://github.com/earendil-works/pi/pull/7330 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22809 | https://github.com/earendil-works/pi/pull/7552 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22972 | https://github.com/earendil-works/pi/pull/7370 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23194 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23419 | https://github.com/earendil-works/pi/pull/7570 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23656 | https://github.com/earendil-works/pi/pull/7569 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23870 | https://github.com/earendil-works/pi/pull/7632 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24254 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24469 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24685 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24917 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25083 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25302 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25495 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25690 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25880 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26158 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26300 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26463 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26595 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26938 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26997 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-28969 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29290 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29537 | https://github.com/earendil-works/pi/pull/7191 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29636 | https://github.com/earendil-works/pi/pull/7215 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29948 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30257 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30478 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30741 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31024 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31159 | https://github.com/earendil-works/pi/issues/7180 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31404 | https://github.com/earendil-works/pi/issues/7096 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31614 | https://github.com/earendil-works/pi/pull/7221 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31864 | https://github.com/earendil-works/pi/pull/7258 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32179 | https://github.com/earendil-works/pi/pull/7022 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32436 | https://github.com/earendil-works/pi/pull/7210 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32649 | https://github.com/earendil-works/pi/pull/7211 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32899 | https://github.com/earendil-works/pi/pull/7214 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33118 | https://github.com/earendil-works/pi/issues/6968 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33278 | https://github.com/earendil-works/pi/pull/7103 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33477 | https://github.com/earendil-works/pi/pull/7110 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33718 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33777 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33955 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34218 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34507 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34705 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-35689 | https://github.com/earendil-works/pi/pull/7045 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-35950 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-36182 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-36279 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37019 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37204 | https://github.com/earendil-works/pi/issues/6949 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37263 | https://github.com/earendil-works/pi/pull/7032 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37521 | https://github.com/earendil-works/pi/pull/7106 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37790 | https://github.com/earendil-works/pi/pull/7072 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-39369 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-39616 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40138 | https://github.com/earendil-works/pi/pull/6971 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40385 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40631 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40895 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41152 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41372 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41579 | https://github.com/earendil-works/pi/pull/6903 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41801 | https://github.com/earendil-works/pi/pull/6964 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42031 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42200 | https://github.com/earendil-works/pi/issues/6977 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42363 | https://github.com/earendil-works/pi/issues/6210 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42535 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42766 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42943 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43173 | https://github.com/earendil-works/pi/pull/7034 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43487 | https://github.com/earendil-works/pi/issues/7005 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43626 | https://github.com/earendil-works/pi/pull/7009 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43824 | https://github.com/earendil-works/pi/issues/6999 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-44755 | https://github.com/earendil-works/pi/pull/6913 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-45079 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-45388 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-46598 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-46815 | https://github.com/earendil-works/pi/pull/6865 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47014 | https://github.com/earendil-works/pi/pull/6772 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47604 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47782 | https://github.com/earendil-works/pi/pull/6896 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48108 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48357 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48765 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48992 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49198 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49458 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49597 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49808 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50004 | https://github.com/earendil-works/pi/pull/6730 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50185 | https://github.com/earendil-works/pi/pull/6731 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50638 | https://github.com/earendil-works/pi/issues/6793 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50796 | https://github.com/earendil-works/pi/issues/6695 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50956 | https://github.com/earendil-works/pi/issues/6735 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-51221 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-51992 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-52129 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-53215 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-53662 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-56629 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-57771 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-57912 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-58079 | https://github.com/earendil-works/pi-mono/issues/6629 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-58581 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-59696 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-59877 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60191 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60400 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60653 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61116 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61377 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61592 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61798 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62006 | https://github.com/earendil-works/pi-mono/pull/6595 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62242 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62439 | https://github.com/earendil-works/pi-mono/pull/6604 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62676 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-63127 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-63344 | https://github.com/earendil-works/pi/issues/6621 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-64433 | https://github.com/earendil-works/pi/pull/6470 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-64691 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-65355 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-66839 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67138 | https://github.com/earendil-works/pi/issues/6201 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67309 | https://github.com/earendil-works/pi/issues/6363 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67466 | https://github.com/earendil-works/pi/pull/6350 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67640 | https://github.com/earendil-works/pi/pull/6267 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68073 | https://github.com/earendil-works/pi/pull/6309 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68232 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68360 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68731 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68912 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69194 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69424 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69623 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69812 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69943 | https://github.com/earendil-works/pi/pull/6430 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70108 | https://github.com/earendil-works/pi/pull/6418 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70362 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70532 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70800 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70981 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71360 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71513 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71991 | https://github.com/earendil-works/pi/pull/6279 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72235 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72425 | https://github.com/earendil-works/pi/issues/6231 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72627 | https://github.com/earendil-works/pi/issues/6189 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72819 | https://github.com/earendil-works/pi/issues/6223 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73006 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73152 | https://github.com/earendil-works/pi/issues/6326 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73499 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73681 | https://github.com/earendil-works/pi/issues/6278 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73802 | https://github.com/earendil-works/pi/issues/6354 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74035 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74184 | https://github.com/earendil-works/pi/issues/6367 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74390 | https://github.com/earendil-works/pi/issues/6369 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74564 | https://github.com/earendil-works/pi/issues/6407 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74711 | https://github.com/earendil-works/pi/issues/6395 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76320 | https://github.com/earendil-works/pi/pull/6078 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76557 | https://github.com/earendil-works/pi/pull/6175 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76742 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76947 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77162 | https://github.com/earendil-works/pi/issues/6122 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77323 | https://github.com/earendil-works/pi/issues/6168 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77644 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77950 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78108 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78361 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78538 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78790 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78940 | https://github.com/earendil-works/pi/pull/6074 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79121 | https://github.com/earendil-works/pi/pull/6048 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79383 | https://github.com/earendil-works/pi/pull/6030 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79474 | https://github.com/earendil-works/pi/pull/6063 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79724 | https://github.com/earendil-works/pi/issues/6162 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79889 | https://github.com/earendil-works/pi/issues/6133 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80209 | https://github.com/earendil-works/pi/pull/6026 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80383 | https://github.com/earendil-works/pi/issues/6002 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80556 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80713 | https://github.com/earendil-works/pi/issues/4290 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80894 | https://github.com/earendil-works/pi/issues/6070 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-81069 | https://github.com/earendil-works/pi/issues/6047 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-81226 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82054 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82247 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82306 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82488 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83149 | https://github.com/earendil-works/pi/issues/5965 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83363 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83406 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83712 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84019 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84229 | https://github.com/earendil-works/pi/pull/5784 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84633 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84877 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85415 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85697 | https://github.com/earendil-works/pi/issues/5953 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85803 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85836 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-86883 | https://github.com/earendil-works/pi/pull/5962 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87130 | https://github.com/earendil-works/pi/issues/5960 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87268 | https://github.com/earendil-works/pi/issues/5959 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87462 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87597 | https://github.com/earendil-works/pi/issues/5957 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87838 | https://github.com/earendil-works/pi/issues/5943 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-88077 | https://github.com/earendil-works/pi/issues/5940 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89349 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89554 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89755 | https://github.com/earendil-works/pi/issues/5905 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89901 | https://github.com/earendil-works/pi/issues/5909 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90080 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90292 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90511 | https://github.com/earendil-works/pi/issues/5899 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90696 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90854 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91027 | https://github.com/earendil-works/pi/issues/5892 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91189 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91222 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92236 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92269 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92387 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92633 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92782 | https://github.com/earendil-works/pi/issues/5877 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92912 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-93241 | https://github.com/earendil-works/pi/issues/4811 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-93404 | https://github.com/earendil-works/pi/issues/5720 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94390 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94570 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94805 | https://github.com/earendil-works/pi/pull/5869 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95058 | https://github.com/earendil-works/pi/pull/5756 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95670 | https://github.com/earendil-works/pi/issues/5868 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95986 | https://github.com/earendil-works/pi/issues/5830 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97194 | https://github.com/earendil-works/pi/pull/5798 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97481 | https://github.com/earendil-works/pi/issues/5790 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97697 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97999 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98173 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98427 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98650 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98881 | https://github.com/earendil-works/pi/issues/5805 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99179 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99383 | https://github.com/earendil-works/pi/issues/5747 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99594 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100184 | https://github.com/earendil-works/pi/issues/5739 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100320 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100586 | https://github.com/earendil-works/pi/pull/5753 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100798 | https://github.com/earendil-works/pi/issues/5055 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101075 | https://github.com/earendil-works/pi/issues/5724 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101280 | https://github.com/earendil-works/pi/issues/5729 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101463 | https://github.com/earendil-works/pi/pull/5708 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101712 | https://github.com/earendil-works/pi/issues/5687 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101891 | https://github.com/earendil-works/pi/issues/5689 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102118 | https://github.com/earendil-works/pi/issues/5695 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102331 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102561 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102771 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102967 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103217 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103276 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103545 | https://github.com/earendil-works/pi/issues/5661 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104469 | https://github.com/earendil-works/pi/pull/5587 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104697 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104984 | https://github.com/earendil-works/pi/issues/5619 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105146 | https://github.com/earendil-works/pi/pull/5627 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105366 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105569 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105739 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106032 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106216 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106459 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106623 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106932 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107112 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107314 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107545 | https://github.com/earendil-works/pi/issues/5643 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107699 | https://github.com/earendil-works/pi/issues/5669 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107887 | https://github.com/earendil-works/pi/issues/5596 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-108113 | https://github.com/earendil-works/pi/pull/5560 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109308 | https://github.com/earendil-works/pi/pull/5553 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109507 | https://github.com/earendil-works/pi/pull/5547 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109743 | https://github.com/earendil-works/pi/issues/5523 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110048 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110153 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110423 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110620 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110846 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111006 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111201 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111352 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111568 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111792 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111963 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112170 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112359 | https://github.com/earendil-works/pi/issues/5433 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112521 | https://github.com/earendil-works/pi/issues/5377 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112744 | https://github.com/earendil-works/pi/issues/5418 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112923 | https://github.com/earendil-works/pi/issues/5516 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-113227 | https://github.com/earendil-works/pi/issues/5045 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-113418 | https://github.com/earendil-works/pi/issues/4841 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-114693 | https://github.com/earendil-works/pi/pull/5332 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-114895 | https://github.com/earendil-works/pi/issues/5455 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115027 | https://github.com/earendil-works/pi/issues/5415 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115373 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115813 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115983 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116179 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116376 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116562 | https://github.com/earendil-works/pi/issues/5432 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116790 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116928 | https://github.com/earendil-works/pi/issues/5359 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117085 | https://github.com/earendil-works/pi/pull/5371 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117880 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117964 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-118343 | https://github.com/earendil-works/pi/pull/5306 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119193 | https://github.com/earendil-works/pi/issues/5226 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119784 | https://github.com/earendil-works/pi/issues/5294 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119988 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120149 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120341 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120497 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120660 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120896 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121142 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121355 | https://github.com/earendil-works/pi/issues/5231 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121513 | https://github.com/earendil-works/pi/pull/5264 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121713 | https://github.com/earendil-works/pi/issues/5299 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122351 | https://github.com/earendil-works/pi-mono/pull/5167 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122510 | https://github.com/earendil-works/pi-mono/pull/5202 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122675 | https://github.com/earendil-works/pi-mono/issues/5153 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122805 | https://github.com/earendil-works/pi-mono/pull/5176 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122997 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123161 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123193 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123417 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123634 | https://github.com/earendil-works/pi-mono/issues/5201 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123829 | https://github.com/earendil-works/pi-mono/issues/5184 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124000 | https://github.com/earendil-works/pi-mono/pull/5195 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124215 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124481 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124853 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-125036 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126033 | https://github.com/earendil-works/pi/issues/5109 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126226 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126471 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126804 | https://github.com/earendil-works/pi/issues/4829 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127005 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127525 | https://github.com/earendil-works/pi/issues/5080 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127725 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127943 | https://github.com/earendil-works/pi/issues/5028 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128277 | https://github.com/earendil-works/pi/issues/5095 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128438 | https://github.com/earendil-works/pi/pull/5029 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128679 | https://github.com/earendil-works/pi/issues/4879 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128918 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129128 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129392 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129539 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129707 | https://github.com/earendil-works/pi/pull/5115 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129929 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-130141 | https://github.com/earendil-works/pi/issues/5132 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-130338 | https://github.com/earendil-works/pi/issues/5092 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131431 | https://github.com/earendil-works/pi/issues/4874 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131599 | https://github.com/earendil-works/pi/issues/5039 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131761 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131936 | https://github.com/earendil-works/pi/issues/4929 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132098 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132365 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132545 | https://github.com/earendil-works/pi/issues/4764 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132732 | https://github.com/earendil-works/pi/issues/4907 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132916 | https://github.com/earendil-works/pi/issues/4897 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133095 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133245 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133403 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133633 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133984 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134158 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134393 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134497 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134601 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134788 | https://github.com/earendil-works/pi/issues/5041 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-135766 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-135949 | https://github.com/earendil-works/pi/issues/4821 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136202 | https://github.com/earendil-works/pi/issues/4916 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136431 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136583 | https://github.com/earendil-works/pi/issues/4868 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136733 | https://github.com/earendil-works/pi/issues/4869 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136873 | https://github.com/earendil-works/pi-mono/pull/4873 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137067 | https://github.com/earendil-works/pi-mono/pull/4898 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137253 | https://github.com/earendil-works/pi-mono/pull/4830 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137439 | https://github.com/earendil-works/pi/issues/4847 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137633 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137665 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137871 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138009 | https://github.com/earendil-works/pi/issues/4832 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138236 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138477 | https://github.com/earendil-works/pi/issues/4870 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138652 | https://github.com/earendil-works/pi/issues/4876 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138801 | https://github.com/earendil-works/pi/issues/4819 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138958 | https://github.com/earendil-works/pi/issues/4818 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139128 | https://github.com/earendil-works/pi/issues/4878 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139321 | https://github.com/earendil-works/pi/issues/4307 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139518 | https://github.com/earendil-works/pi-mono/pull/4756 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-140261 | https://github.com/earendil-works/pi-mono/pull/4724 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-140445 | https://github.com/earendil-works/pi-mono/pull/4775 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141284 | https://github.com/earendil-works/pi/issues/4752 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141481 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141822 | https://github.com/earendil-works/pi-mono/pull/4799 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142092 | https://github.com/earendil-works/pi/issues/4710 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142265 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142414 | https://github.com/earendil-works/pi/issues/4763 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142585 | https://github.com/earendil-works/pi-mono/pull/4759 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142789 | https://github.com/earendil-works/pi-mono/pull/4709 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142996 | https://github.com/earendil-works/pi-mono/pull/4664 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143330 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143484 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143586 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143687 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143766 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143965 | https://github.com/earendil-works/pi/issues/4793 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144201 | https://github.com/earendil-works/pi/issues/4681 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144423 | https://github.com/earendil-works/pi-mono/pull/4661 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144686 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144718 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144876 | https://github.com/earendil-works/pi/issues/4612 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145061 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145239 | https://github.com/earendil-works/pi/issues/4647 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145421 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145587 | https://github.com/earendil-works/pi/issues/4665 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145763 | https://github.com/earendil-works/pi-mono/pull/4243 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146063 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146095 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146267 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146299 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146580 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146612 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146815 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146847 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147068 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147100 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147304 | https://github.com/earendil-works/pi/issues/4650 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147363 | https://github.com/earendil-works/pi/issues/4652 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147422 | https://github.com/earendil-works/pi/issues/4653 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147601 | https://github.com/earendil-works/pi/issues/4623 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147738 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147998 | https://github.com/earendil-works/pi/issues/4484 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148215 | https://github.com/earendil-works/pi-mono/pull/4541 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148413 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148445 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148621 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148696 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148985 | https://github.com/earendil-works/pi/issues/4587 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149211 | https://github.com/earendil-works/pi/issues/4619 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149438 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149470 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149726 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150281 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150357 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150494 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150716 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150880 | https://github.com/earendil-works/pi/pull/4458 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151133 | https://github.com/earendil-works/pi/issues/4519 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151393 | https://github.com/earendil-works/pi/issues/4492 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151538 | https://github.com/earendil-works/pi/issues/4508 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151811 | https://github.com/earendil-works/pi/issues/4559 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151966 | https://github.com/earendil-works/pi/issues/4534 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152114 | https://github.com/earendil-works/pi/issues/4553 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152291 | https://github.com/earendil-works/pi/issues/4583 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152470 | https://github.com/earendil-works/pi/issues/4510 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152715 | https://github.com/earendil-works/pi/issues/4503 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152855 | https://github.com/earendil-works/pi/issues/4429 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152988 | https://github.com/earendil-works/pi/issues/4433 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153216 | https://github.com/earendil-works/pi-mono/pull/4426 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153611 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153813 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153947 | https://github.com/earendil-works/pi/issues/4333 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154072 | https://github.com/earendil-works/pi/issues/4289 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154261 | https://github.com/earendil-works/pi/issues/4280 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154420 | earendil-works/pi-mono | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154449 | @earendil-works/ | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154685 | @earendil-works/pi-coding-agent | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-155510 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-155959 | https://github.com/earendil-works/pi-mono/pull/4244 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-156127 | https://github.com/earendil-works/pi-mono/pull/4162 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-156969 | https://github.com/earendil-works/pi-mono/pull/4234 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-157415 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-157547 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233030 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233178 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233958 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/docs/containerization.md@byte-1147 | https://github.com/earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/index.ts@byte-568 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/index.ts@byte-1194 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-658 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1138 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1205 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1276 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1383 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1813 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1917 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package.json@byte-306 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/core/tools/find.ts@byte-8995 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/migrations.ts@byte-2629 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/changelog.ts@byte-391 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/child-process.ts@byte-1531 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/changelog.test.ts@byte-1331 | https://github.com/earendil-works/pi-mono/pull/5167 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts@byte-304 | https://github.com/earendil-works/pi-mono/issues/2791 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3302 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5080-signal-shutdown-extension-cleanup.test.ts@byte-453 | https://github.com/earendil-works/pi/issues/5080 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5303-bash-output-truncation.test.ts@byte-327 | https://github.com/earendil-works/pi/issues/5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5724-sigterm-signal-exit.test.ts@byte-169 | https://github.com/earendil-works/pi/issues/5724 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5868-rpc-unknown-command-id.test.ts@byte-296 | https://github.com/earendil-works/pi/issues/5868 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/6104-find-root-relativization.test.ts@byte-219 | https://github.com/earendil-works/pi/issues/6104 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/protocol/CHANGELOG.md@byte-388 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/protocol/CHANGELOG.md@byte-666 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-322 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-701 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-990 | https://github.com/earendil-works/pi/pull/6898 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-195 | @earendil-works/pi-storage-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-239 | @earendil-works/pi-session-backend-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-817 | https://github.com/earendil-works/pi/pull/7655 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-1139 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-198 | https://github.com/earendil-works/pi/issues/7735 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-377 | https://github.com/earendil-works/pi/issues/7725 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-1547 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-2350 | https://github.com/earendil-works/pi/pull/7361 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-3034 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-3932 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4242 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4374 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4527 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4649 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4971 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5243 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5452 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5779 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5988 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6389 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6606 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6841 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7185 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7437 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7870 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8245 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8376 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8785 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8989 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9229 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9469 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9528 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9788 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10077 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10247 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10439 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10709 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10866 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11067 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11264 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11550 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11738 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11946 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12220 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12456 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12634 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12788 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12930 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13211 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13462 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13779 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13953 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14292 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14396 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14700 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15463 | https://github.com/earendil-works/pi-mono/pull/4327 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15629 | https://github.com/earendil-works/pi-mono/pull/4379 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15805 | https://github.com/earendil-works/pi-mono/pull/4463 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-16008 | https://github.com/earendil-works/pi-mono/pull/4461 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-16196 | https://github.com/earendil-works/pi-mono/pull/4482 | Immutable changelog | Packaged historical release record; retain immutable provenance | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/src/components/markdown.ts@byte-5102 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/packages/tui/test/editor.test.ts@byte-80874 | earendil-works/pi#5496: | Upstream history | Original upstream provenance; retain while source or issue remains relevant | -| diffex-phase1-source.tar.gz!diffex-0.2.0/scripts/release-notes.mjs@byte-478 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-867 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-924 | earendil-works | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-1048 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-3628 | secrets.EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7583 | EARENDIL_ORG_READ_TOKEN | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-7777 | https://api.github.com/orgs/earendil-works/teams/staff/memberships/ | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8326 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8597 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-8954 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9053 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/.github/workflows/issue-analysis.yml@byte-9262 | earendil-works/staff | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/LICENSE@byte-10777 | Luntraa | Legal attribution | Confirmed copyright owner; retain while legally required | +| diffex-identity-source.tar.gz!diffex-0.2.0/README.md@byte-1551 | https://github.com/earendil-works/pi | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-1421 | security@earendil.com | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4233 | Earendil | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/SECURITY.md@byte-4262 | Earendil-operated | Owner-approved skip | Exact inherited security/staff reference deferred by owner; replace or remove when that operational migration resumes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25698 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-25780 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26260 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26327 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26398 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26505 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-26935 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-27039 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-27460 | node_modules/@earendil-works/gondolin/node_modules/undici | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-180096 | packages/agent/node_modules/@earendil-works/pi-ai/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-185200 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186028 | packages/coding-agent/node_modules/@earendil-works/pi-agent-core/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186382 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/@anthropic-ai/sdk | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/package-lock.json@byte-186995 | packages/coding-agent/node_modules/@earendil-works/pi-ai/node_modules/typebox | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-833 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1516 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1727 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-1981 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-2162 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-2681 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-3558 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-3812 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4091 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4411 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4551 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4583 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4815 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-4922 | https://github.com/earendil-works/pi/issues/6851 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5097 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5475 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-5851 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6020 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6238 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6419 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6620 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-6833 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-7062 | https://github.com/earendil-works/pi/issues/6242 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8126 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8501 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8738 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-8947 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9261 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9360 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9458 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9517 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-9924 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-10158 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-10727 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11244 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11396 | https://github.com/earendil-works/pi/issues/4715 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/agent/CHANGELOG.md@byte-11572 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3081 | @earendil-works/pi-telemetry | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3316 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3720 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-3950 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4345 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4707 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-4854 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5113 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5299 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5852 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-5911 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6192 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6534 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6739 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-6945 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7167 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7323 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7532 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-7829 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8018 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8203 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-8704 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9186 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9414 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9737 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-9916 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10157 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10359 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10558 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10617 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-10805 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11012 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11280 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11638 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11859 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-11956 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-12638 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-12897 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-13100 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-13854 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14468 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14690 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-14951 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15157 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15399 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-15665 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16103 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16282 | https://github.com/earendil-works/pi/pull/6840 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16438 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16587 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-16846 | https://github.com/earendil-works/pi/pull/6765 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-17304 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-17547 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18018 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18243 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18414 | https://github.com/earendil-works/pi/issues/6668 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18684 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-18853 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19315 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19442 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-19885 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-20200 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-22578 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-23284 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-23682 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24105 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24276 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24490 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24689 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-24901 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25243 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25465 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25716 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-25944 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26171 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26364 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-26602 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-27258 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-27944 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28237 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28492 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28692 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-28922 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29237 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29571 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-29714 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30003 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30223 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-30590 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31010 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31137 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31352 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-31661 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32339 | https://github.com/earendil-works/pi/pull/6341 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32556 | https://github.com/earendil-works/pi/issues/6256 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-32677 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-33198 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-33786 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34048 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34334 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34482 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34748 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-34915 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35075 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35317 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-35976 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36153 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36212 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36384 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-36896 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37002 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37339 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-37825 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38316 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38361 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38766 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-38793 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39155 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39595 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39656 | @earendil-works/pi-ai/providers/anthropic | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-39842 | @earendil-works/pi-ai/api/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-40101 | @earendil-works/pi-ai/api/anthropic-messages | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-40183 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-41747 | @earendil-works/pi-ai/providers/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-41842 | @earendil-works/pi-ai/providers/all | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43177 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43697 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-43858 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44081 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44335 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44530 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44699 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44864 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-44963 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45129 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45378 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45498 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-45705 | https://github.com/earendil-works/pi/issues/5860 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46195 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46385 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46549 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-46724 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47012 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47213 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47454 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47674 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-47887 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48423 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48641 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-48834 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49073 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49233 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49451 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-49843 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50061 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50211 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50396 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50537 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50743 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-50965 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51174 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51405 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-51759 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52076 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52227 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52409 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52600 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-52753 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53245 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53476 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-53742 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54208 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54571 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-54810 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55020 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55284 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55431 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55648 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55802 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-55960 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56180 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56414 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-56730 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57076 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57306 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57547 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-57775 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-58569 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-58812 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59084 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59362 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59526 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-59800 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60014 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60209 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60545 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-60757 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61028 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61229 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61480 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-61767 | https://github.com/earendil-works/pi/issues/4485 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62013 | https://github.com/earendil-works/pi/issues/4345 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62193 | https://github.com/earendil-works/pi-mono/pull/4358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62387 | https://github.com/earendil-works/pi-mono/pull/4354 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi/issues/4513 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-63736 | https://github.com/earendil-works/pi/issues/4563 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-63928 | https://github.com/earendil-works/pi/issues/4539 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64152 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64857 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/CHANGELOG.md@byte-64997 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/src/api/azure-openai-responses.ts@byte-1191 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/src/api/openai-responses-shared.ts@byte-18130 | https://github.com/earendil-works/pi/issues/6409. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/src/api/openai-responses.ts@byte-1360 | https://github.com/earendil-works/pi/issues/6265 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/test/openai-completions-empty-tools.test.ts@byte-402 | https://github.com/earendil-works/pi-mono/issues/ | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/ai/test/tool-call-id-normalization.test.ts@byte-356 | https://github.com/earendil-works/pi-mono/issues/1022 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/client/CHANGELOG.md@byte-262 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-1659 | https://github.com/earendil-works/pi/issues/7128 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-2379 | https://github.com/earendil-works/pi/issues/7731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-4189 | https://github.com/earendil-works/pi/issues/7290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-4626 | https://github.com/earendil-works/pi/issues/7030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-8452 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-8808 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9120 | @earendil-works/pi-coding-agent/client | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9304 | https://github.com/earendil-works/pi/pull/7344 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9361 | https://github.com/earendil-works/pi/pull/7348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9418 | https://github.com/earendil-works/pi/pull/7371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9475 | https://github.com/earendil-works/pi/pull/7409 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-9891 | https://github.com/earendil-works/pi/pull/7231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-10087 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-10937 | https://github.com/earendil-works/pi/pull/7624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-11414 | https://github.com/earendil-works/pi/pull/7681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-11669 | https://github.com/earendil-works/pi/pull/7493 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12209 | https://github.com/earendil-works/pi/pull/7568 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12449 | https://github.com/earendil-works/pi/pull/7638 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-12985 | https://github.com/earendil-works/pi/pull/7339 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13459 | https://github.com/earendil-works/pi/pull/7286 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13784 | https://github.com/earendil-works/pi/pull/7367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-13978 | https://github.com/earendil-works/pi/pull/7611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi/pull/7448 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14245 | https://github.com/earendil-works/pi/pull/7646 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-14924 | https://github.com/earendil-works/pi/issues/7684 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15238 | https://github.com/earendil-works/pi/issues/7508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15496 | https://github.com/earendil-works/pi/issues/7328 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-15753 | https://github.com/earendil-works/pi/issues/7676 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16117 | https://github.com/earendil-works/pi/pull/7707 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16291 | https://github.com/earendil-works/pi/issues/6817 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16615 | https://github.com/earendil-works/pi/issues/7064 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16674 | https://github.com/earendil-works/pi/issues/7547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16840 | https://github.com/earendil-works/pi/issues/7572 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-16987 | https://github.com/earendil-works/pi/issues/7560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-17313 | https://github.com/earendil-works/pi/issues/7327 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-17515 | https://github.com/earendil-works/pi/pull/7390 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18264 | https://github.com/earendil-works/pi/issues/7333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18405 | https://github.com/earendil-works/pi/issues/7187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18709 | https://github.com/earendil-works/pi/issues/7292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-18966 | https://github.com/earendil-works/pi/pull/7325 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19190 | https://github.com/earendil-works/pi/issues/7319 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19437 | https://github.com/earendil-works/pi/issues/7316 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19593 | https://github.com/earendil-works/pi/issues/7301 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-19652 | https://github.com/earendil-works/pi/pull/7421 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20013 | https://github.com/earendil-works/pi/issues/7027 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20072 | https://github.com/earendil-works/pi/issues/7113 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20131 | https://github.com/earendil-works/pi/issues/7418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20327 | https://github.com/earendil-works/pi/issues/7153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-20477 | https://github.com/earendil-works/pi/issues/7443 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21395 | https://github.com/earendil-works/pi/issues/6768 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21646 | https://github.com/earendil-works/pi/issues/7579 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-21865 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22003 | https://github.com/earendil-works/pi/pull/7656 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22205 | https://github.com/earendil-works/pi/pull/7387 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22369 | https://github.com/earendil-works/pi/pull/7435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22626 | https://github.com/earendil-works/pi/pull/7330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22809 | https://github.com/earendil-works/pi/pull/7552 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-22972 | https://github.com/earendil-works/pi/pull/7370 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23194 | https://github.com/earendil-works/pi/pull/7540 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23419 | https://github.com/earendil-works/pi/pull/7570 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23656 | https://github.com/earendil-works/pi/pull/7569 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-23870 | https://github.com/earendil-works/pi/pull/7632 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24254 | https://github.com/earendil-works/pi/pull/7205 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24469 | https://github.com/earendil-works/pi/pull/7358 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24685 | https://github.com/earendil-works/pi/pull/7362 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-24917 | https://github.com/earendil-works/pi/pull/7364 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25083 | https://github.com/earendil-works/pi/pull/7471 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25302 | https://github.com/earendil-works/pi/pull/7494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25495 | https://github.com/earendil-works/pi/pull/7672 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25690 | https://github.com/earendil-works/pi/pull/7670 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-25880 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26158 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26300 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26463 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26595 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26938 | https://github.com/earendil-works/pi/issues/7199 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-26997 | https://github.com/earendil-works/pi/pull/7230 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-28969 | https://github.com/earendil-works/pi/pull/7243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29290 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29537 | https://github.com/earendil-works/pi/pull/7191 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29636 | https://github.com/earendil-works/pi/pull/7215 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-29948 | https://github.com/earendil-works/pi/pull/7151 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30257 | https://github.com/earendil-works/pi/pull/7272 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30478 | https://github.com/earendil-works/pi/pull/7114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-30741 | https://github.com/earendil-works/pi/pull/7158 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31024 | https://github.com/earendil-works/pi/pull/7168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31159 | https://github.com/earendil-works/pi/issues/7180 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31404 | https://github.com/earendil-works/pi/issues/7096 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31614 | https://github.com/earendil-works/pi/pull/7221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-31864 | https://github.com/earendil-works/pi/pull/7258 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32179 | https://github.com/earendil-works/pi/pull/7022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32436 | https://github.com/earendil-works/pi/pull/7210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32649 | https://github.com/earendil-works/pi/pull/7211 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-32899 | https://github.com/earendil-works/pi/pull/7214 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33118 | https://github.com/earendil-works/pi/issues/6968 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33278 | https://github.com/earendil-works/pi/pull/7103 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33477 | https://github.com/earendil-works/pi/pull/7110 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33718 | https://github.com/earendil-works/pi/issues/6951 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33777 | https://github.com/earendil-works/pi/issues/6998 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-33955 | https://github.com/earendil-works/pi/pull/7174 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34218 | https://github.com/earendil-works/pi/pull/7176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34507 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-34705 | https://github.com/earendil-works/pi/pull/7288 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-35689 | https://github.com/earendil-works/pi/pull/7045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-35950 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-36182 | https://github.com/earendil-works/pi/pull/7081 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-36279 | https://github.com/earendil-works/pi/pull/7083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37019 | https://github.com/earendil-works/pi/issues/5871 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37204 | https://github.com/earendil-works/pi/issues/6949 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37263 | https://github.com/earendil-works/pi/pull/7032 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37521 | https://github.com/earendil-works/pi/pull/7106 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-37790 | https://github.com/earendil-works/pi/pull/7072 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-39369 | https://github.com/earendil-works/pi/pull/6935 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-39616 | https://github.com/earendil-works/pi/pull/6927 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40138 | https://github.com/earendil-works/pi/pull/6971 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40385 | https://github.com/earendil-works/pi/pull/6928 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40631 | https://github.com/earendil-works/pi/pull/6946 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-40895 | https://github.com/earendil-works/pi/pull/6941 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41152 | https://github.com/earendil-works/pi/pull/6955 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41372 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41579 | https://github.com/earendil-works/pi/pull/6903 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-41801 | https://github.com/earendil-works/pi/pull/6964 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42031 | https://github.com/earendil-works/pi/pull/6618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42200 | https://github.com/earendil-works/pi/issues/6977 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42363 | https://github.com/earendil-works/pi/issues/6210 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42535 | https://github.com/earendil-works/pi/pull/6980 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42766 | https://github.com/earendil-works/pi/pull/7016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-42943 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43173 | https://github.com/earendil-works/pi/pull/7034 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43487 | https://github.com/earendil-works/pi/issues/7005 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43626 | https://github.com/earendil-works/pi/pull/7009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-43824 | https://github.com/earendil-works/pi/issues/6999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-44755 | https://github.com/earendil-works/pi/pull/6913 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-45079 | https://github.com/earendil-works/pi/pull/6901 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-45388 | https://github.com/earendil-works/pi/issues/6915 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-46598 | https://github.com/earendil-works/pi/pull/6858 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-46815 | https://github.com/earendil-works/pi/pull/6865 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47014 | https://github.com/earendil-works/pi/pull/6772 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47604 | https://github.com/earendil-works/pi/pull/6671 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-47782 | https://github.com/earendil-works/pi/pull/6896 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48108 | https://github.com/earendil-works/pi/pull/6864 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48357 | https://github.com/earendil-works/pi/pull/6854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48765 | https://github.com/earendil-works/pi/pull/6812 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-48992 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49198 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49458 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49597 | https://github.com/earendil-works/pi/pull/6834 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-49808 | https://github.com/earendil-works/pi/pull/6853 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50004 | https://github.com/earendil-works/pi/pull/6730 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50185 | https://github.com/earendil-works/pi/pull/6731 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50638 | https://github.com/earendil-works/pi/issues/6793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50796 | https://github.com/earendil-works/pi/issues/6695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-50956 | https://github.com/earendil-works/pi/issues/6735 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-51221 | https://github.com/earendil-works/pi/issues/6727 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-51992 | https://github.com/earendil-works/pi/issues/6737 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-52129 | https://github.com/earendil-works/pi/issues/6736 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-53215 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-53662 | https://github.com/earendil-works/pi-mono/pull/6734 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-56629 | https://github.com/earendil-works/pi-mono/pull/6651 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-57771 | https://github.com/earendil-works/pi-mono/issues/6630 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-57912 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-58079 | https://github.com/earendil-works/pi-mono/issues/6629 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-58581 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-59696 | https://github.com/earendil-works/pi-mono/pull/6474 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-59877 | https://github.com/earendil-works/pi-mono/pull/6490 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60191 | https://github.com/earendil-works/pi-mono/pull/6588 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60400 | https://github.com/earendil-works/pi-mono/pull/6481 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-60653 | https://github.com/earendil-works/pi-mono/pull/6496 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61116 | https://github.com/earendil-works/pi-mono/pull/6532 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61377 | https://github.com/earendil-works/pi-mono/pull/6292 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61592 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-61798 | https://github.com/earendil-works/pi-mono/pull/6544 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62006 | https://github.com/earendil-works/pi-mono/pull/6595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62242 | https://github.com/earendil-works/pi-mono/pull/6598 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62439 | https://github.com/earendil-works/pi-mono/pull/6604 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62676 | https://github.com/earendil-works/pi-mono/pull/6608 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-62879 | https://github.com/earendil-works/pi-mono/pull/6611 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-63127 | https://github.com/earendil-works/pi-mono/pull/6645 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-63344 | https://github.com/earendil-works/pi/issues/6621 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-64433 | https://github.com/earendil-works/pi/pull/6470 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-64691 | https://github.com/earendil-works/pi/issues/6464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-65355 | https://github.com/earendil-works/pi/pull/6457 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-66839 | https://github.com/earendil-works/pi/issues/6200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67138 | https://github.com/earendil-works/pi/issues/6201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67309 | https://github.com/earendil-works/pi/issues/6363 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67466 | https://github.com/earendil-works/pi/pull/6350 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-67640 | https://github.com/earendil-works/pi/pull/6267 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68073 | https://github.com/earendil-works/pi/pull/6309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68232 | https://github.com/earendil-works/pi/issues/6435 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68360 | https://github.com/earendil-works/pi/pull/6417 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68731 | https://github.com/earendil-works/pi/pull/6449 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-68912 | https://github.com/earendil-works/pi/issues/6239 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69194 | https://github.com/earendil-works/pi/issues/6187 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69424 | https://github.com/earendil-works/pi/issues/6268 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69623 | https://github.com/earendil-works/pi/issues/6262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69812 | https://github.com/earendil-works/pi/issues/6195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-69943 | https://github.com/earendil-works/pi/pull/6430 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70108 | https://github.com/earendil-works/pi/pull/6418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70362 | https://github.com/earendil-works/pi/issues/6439 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70532 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70800 | https://github.com/earendil-works/pi/pull/6343 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-70981 | https://github.com/earendil-works/pi/pull/6285 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71360 | https://github.com/earendil-works/pi/issues/6265 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71513 | https://github.com/earendil-works/pi/issues/6235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-71991 | https://github.com/earendil-works/pi/pull/6279 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72235 | https://github.com/earendil-works/pi/issues/6204 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72425 | https://github.com/earendil-works/pi/issues/6231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72627 | https://github.com/earendil-works/pi/issues/6189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-72819 | https://github.com/earendil-works/pi/issues/6223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73006 | https://github.com/earendil-works/pi/issues/5536 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73152 | https://github.com/earendil-works/pi/issues/6326 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73499 | https://github.com/earendil-works/pi/issues/6181 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73681 | https://github.com/earendil-works/pi/issues/6278 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-73802 | https://github.com/earendil-works/pi/issues/6354 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74035 | https://github.com/earendil-works/pi/issues/6431 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74184 | https://github.com/earendil-works/pi/issues/6367 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74390 | https://github.com/earendil-works/pi/issues/6369 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74564 | https://github.com/earendil-works/pi/issues/6407 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-74711 | https://github.com/earendil-works/pi/issues/6395 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76320 | https://github.com/earendil-works/pi/pull/6078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76557 | https://github.com/earendil-works/pi/pull/6175 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76742 | https://github.com/earendil-works/pi/pull/6004 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-76947 | https://github.com/earendil-works/pi/issues/6057 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77162 | https://github.com/earendil-works/pi/issues/6122 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77323 | https://github.com/earendil-works/pi/issues/6168 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77644 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-77950 | https://github.com/earendil-works/pi/issues/6138 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78108 | https://github.com/earendil-works/pi/pull/5832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78361 | https://github.com/earendil-works/pi/issues/5595 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78538 | https://github.com/earendil-works/pi/issues/6009 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78790 | https://github.com/earendil-works/pi/issues/6083 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-78940 | https://github.com/earendil-works/pi/pull/6074 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79121 | https://github.com/earendil-works/pi/pull/6048 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79383 | https://github.com/earendil-works/pi/pull/6030 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79474 | https://github.com/earendil-works/pi/pull/6063 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79724 | https://github.com/earendil-works/pi/issues/6162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-79889 | https://github.com/earendil-works/pi/issues/6133 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80209 | https://github.com/earendil-works/pi/pull/6026 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80383 | https://github.com/earendil-works/pi/issues/6002 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80556 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80713 | https://github.com/earendil-works/pi/issues/4290 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-80894 | https://github.com/earendil-works/pi/issues/6070 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-81069 | https://github.com/earendil-works/pi/issues/6047 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-81226 | https://github.com/earendil-works/pi/issues/6019 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82054 | https://github.com/earendil-works/pi/issues/6021 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82247 | https://github.com/earendil-works/pi/issues/6016 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82306 | https://github.com/earendil-works/pi/issues/6017 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-82488 | https://github.com/earendil-works/pi/issues/6020 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83149 | https://github.com/earendil-works/pi/issues/5965 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83363 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83406 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-83712 | @earendil-works/pi-ai/compat | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84019 | https://github.com/earendil-works/pi/pull/5999 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84229 | https://github.com/earendil-works/pi/pull/5784 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84633 | https://github.com/earendil-works/pi/pull/5526 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-84877 | https://github.com/earendil-works/pi/issues/5973 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85415 | https://github.com/earendil-works/pi/issues/5967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85697 | https://github.com/earendil-works/pi/issues/5953 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85803 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-85836 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-86883 | https://github.com/earendil-works/pi/pull/5962 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87130 | https://github.com/earendil-works/pi/issues/5960 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87268 | https://github.com/earendil-works/pi/issues/5959 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87462 | https://github.com/earendil-works/pi/issues/5114 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87597 | https://github.com/earendil-works/pi/issues/5957 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-87838 | https://github.com/earendil-works/pi/issues/5943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-88077 | https://github.com/earendil-works/pi/issues/5940 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89349 | https://github.com/earendil-works/pi/issues/5673 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89554 | https://github.com/earendil-works/pi/issues/5923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89755 | https://github.com/earendil-works/pi/issues/5905 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-89901 | https://github.com/earendil-works/pi/issues/5909 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90080 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90292 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90511 | https://github.com/earendil-works/pi/issues/5899 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90696 | https://github.com/earendil-works/pi/issues/5893 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-90854 | https://github.com/earendil-works/pi/issues/5897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91027 | https://github.com/earendil-works/pi/issues/5892 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91189 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-91222 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92236 | @earendil-works/pi-ai/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92269 | @earendil-works/pi-agent-core/base | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92387 | https://github.com/earendil-works/pi/pull/5348 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92633 | https://github.com/earendil-works/pi/issues/5854 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92782 | https://github.com/earendil-works/pi/issues/5877 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-92912 | https://github.com/earendil-works/pi/pull/5866 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-93241 | https://github.com/earendil-works/pi/issues/4811 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-93404 | https://github.com/earendil-works/pi/issues/5720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94390 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94570 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-94805 | https://github.com/earendil-works/pi/pull/5869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95058 | https://github.com/earendil-works/pi/pull/5756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95670 | https://github.com/earendil-works/pi/issues/5868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-95986 | https://github.com/earendil-works/pi/issues/5830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97194 | https://github.com/earendil-works/pi/pull/5798 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97481 | https://github.com/earendil-works/pi/issues/5790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97697 | https://github.com/earendil-works/pi/issues/5728 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-97999 | https://github.com/earendil-works/pi/issues/5819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98173 | https://github.com/earendil-works/pi/issues/5818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98427 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98650 | https://github.com/earendil-works/pi/issues/5770 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-98881 | https://github.com/earendil-works/pi/issues/5805 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99179 | https://github.com/earendil-works/pi/issues/5761 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99383 | https://github.com/earendil-works/pi/issues/5747 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-99594 | https://github.com/earendil-works/pi/issues/5760 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100184 | https://github.com/earendil-works/pi/issues/5739 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100320 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100586 | https://github.com/earendil-works/pi/pull/5753 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-100798 | https://github.com/earendil-works/pi/issues/5055 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101075 | https://github.com/earendil-works/pi/issues/5724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101280 | https://github.com/earendil-works/pi/issues/5729 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101463 | https://github.com/earendil-works/pi/pull/5708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101712 | https://github.com/earendil-works/pi/issues/5687 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-101891 | https://github.com/earendil-works/pi/issues/5689 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102118 | https://github.com/earendil-works/pi/issues/5695 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102331 | https://github.com/earendil-works/pi/pull/5738 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102561 | https://github.com/earendil-works/pi/issues/4637 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102771 | https://github.com/earendil-works/pi/issues/5702 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-102967 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103217 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103276 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-103545 | https://github.com/earendil-works/pi/issues/5661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104469 | https://github.com/earendil-works/pi/pull/5587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104697 | https://github.com/earendil-works/pi/pull/5561 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-104984 | https://github.com/earendil-works/pi/issues/5619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105146 | https://github.com/earendil-works/pi/pull/5627 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105366 | https://github.com/earendil-works/pi/issues/5677 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105569 | https://github.com/earendil-works/pi/issues/5644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-105739 | https://github.com/earendil-works/pi/pull/5666 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106032 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106216 | https://github.com/earendil-works/pi/pull/5567 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106459 | https://github.com/earendil-works/pi/issues/5573 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106623 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-106932 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107112 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107314 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107545 | https://github.com/earendil-works/pi/issues/5643 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107699 | https://github.com/earendil-works/pi/issues/5669 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-107887 | https://github.com/earendil-works/pi/issues/5596 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-108113 | https://github.com/earendil-works/pi/pull/5560 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109308 | https://github.com/earendil-works/pi/pull/5553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109507 | https://github.com/earendil-works/pi/pull/5547 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-109743 | https://github.com/earendil-works/pi/issues/5523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110048 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110153 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110423 | https://github.com/earendil-works/pi/pull/5527 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110620 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-110846 | https://github.com/earendil-works/pi/issues/5330 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111006 | https://github.com/earendil-works/pi/issues/5331 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111201 | https://github.com/earendil-works/pi/issues/5531 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111352 | https://github.com/earendil-works/pi/issues/5530 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111568 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111792 | https://github.com/earendil-works/pi/issues/5559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-111963 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112170 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112359 | https://github.com/earendil-works/pi/issues/5433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112521 | https://github.com/earendil-works/pi/issues/5377 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112744 | https://github.com/earendil-works/pi/issues/5418 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-112923 | https://github.com/earendil-works/pi/issues/5516 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-113227 | https://github.com/earendil-works/pi/issues/5045 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-113418 | https://github.com/earendil-works/pi/issues/4841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-114693 | https://github.com/earendil-works/pi/pull/5332 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-114895 | https://github.com/earendil-works/pi/issues/5455 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115027 | https://github.com/earendil-works/pi/issues/5415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115373 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115813 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-115983 | https://github.com/earendil-works/pi/issues/5401 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116179 | https://github.com/earendil-works/pi/issues/5456 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116376 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116562 | https://github.com/earendil-works/pi/issues/5432 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116790 | https://github.com/earendil-works/pi/issues/5347 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-116928 | https://github.com/earendil-works/pi/issues/5359 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117085 | https://github.com/earendil-works/pi/pull/5371 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117880 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-117964 | https://github.com/earendil-works/pi/issues/5313 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-118343 | https://github.com/earendil-works/pi/pull/5306 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119193 | https://github.com/earendil-works/pi/issues/5226 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119784 | https://github.com/earendil-works/pi/issues/5294 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-119988 | https://github.com/earendil-works/pi/issues/4975 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120149 | https://github.com/earendil-works/pi/pull/5251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120341 | https://github.com/earendil-works/pi/issues/5243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120497 | https://github.com/earendil-works/pi/issues/5309 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120660 | https://github.com/earendil-works/pi/pull/5221 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-120896 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121142 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121355 | https://github.com/earendil-works/pi/issues/5231 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121513 | https://github.com/earendil-works/pi/pull/5264 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-121713 | https://github.com/earendil-works/pi/issues/5299 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122351 | https://github.com/earendil-works/pi-mono/pull/5167 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122510 | https://github.com/earendil-works/pi-mono/pull/5202 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122675 | https://github.com/earendil-works/pi-mono/issues/5153 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122805 | https://github.com/earendil-works/pi-mono/pull/5176 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-122997 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123161 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123193 | https://github.com/earendil-works/pi-mono/pull/5178 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123417 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123634 | https://github.com/earendil-works/pi-mono/issues/5201 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-123829 | https://github.com/earendil-works/pi-mono/issues/5184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124000 | https://github.com/earendil-works/pi-mono/pull/5195 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124215 | https://github.com/earendil-works/pi-mono/issues/5159 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124481 | https://github.com/earendil-works/pi-mono/issues/5169 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-124853 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-125036 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126033 | https://github.com/earendil-works/pi/issues/5109 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126226 | https://github.com/earendil-works/pi/pull/4911 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126471 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-126804 | https://github.com/earendil-works/pi/issues/4829 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127005 | https://github.com/earendil-works/pi/issues/4801 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127525 | https://github.com/earendil-works/pi/issues/5080 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127725 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-127943 | https://github.com/earendil-works/pi/issues/5028 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128277 | https://github.com/earendil-works/pi/issues/5095 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128438 | https://github.com/earendil-works/pi/pull/5029 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128679 | https://github.com/earendil-works/pi/issues/4879 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-128918 | https://github.com/earendil-works/pi/issues/5148 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129128 | https://github.com/earendil-works/pi/issues/4464 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129392 | https://github.com/earendil-works/pi/issues/5078 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129539 | https://github.com/earendil-works/pi/issues/5075 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129707 | https://github.com/earendil-works/pi/pull/5115 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-129929 | https://github.com/earendil-works/pi/pull/5107 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-130141 | https://github.com/earendil-works/pi/issues/5132 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-130338 | https://github.com/earendil-works/pi/issues/5092 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131431 | https://github.com/earendil-works/pi/issues/4874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131599 | https://github.com/earendil-works/pi/issues/5039 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131761 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-131936 | https://github.com/earendil-works/pi/issues/4929 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132098 | https://github.com/earendil-works/pi/issues/4983 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132365 | https://github.com/earendil-works/pi/issues/4945 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132545 | https://github.com/earendil-works/pi/issues/4764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132732 | https://github.com/earendil-works/pi/issues/4907 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-132916 | https://github.com/earendil-works/pi/issues/4897 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133095 | https://github.com/earendil-works/pi/issues/4967 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133245 | https://github.com/earendil-works/pi/issues/4969 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133403 | https://github.com/earendil-works/pi/issues/4943 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133633 | https://github.com/earendil-works/pi-mono/pull/4991 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-133984 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134158 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134393 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134497 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134601 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-134788 | https://github.com/earendil-works/pi/issues/5041 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-135766 | https://github.com/earendil-works/pi-mono/pull/4797 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-135949 | https://github.com/earendil-works/pi/issues/4821 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136202 | https://github.com/earendil-works/pi/issues/4916 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136431 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136583 | https://github.com/earendil-works/pi/issues/4868 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136733 | https://github.com/earendil-works/pi/issues/4869 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-136873 | https://github.com/earendil-works/pi-mono/pull/4873 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137067 | https://github.com/earendil-works/pi-mono/pull/4898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137253 | https://github.com/earendil-works/pi-mono/pull/4830 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137439 | https://github.com/earendil-works/pi/issues/4847 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137633 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137665 | https://github.com/earendil-works/pi/issues/4842 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-137871 | https://github.com/earendil-works/pi/issues/4848 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138009 | https://github.com/earendil-works/pi/issues/4832 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138236 | https://github.com/earendil-works/pi-mono/pull/4788 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138477 | https://github.com/earendil-works/pi/issues/4870 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138652 | https://github.com/earendil-works/pi/issues/4876 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138801 | https://github.com/earendil-works/pi/issues/4819 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-138958 | https://github.com/earendil-works/pi/issues/4818 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139128 | https://github.com/earendil-works/pi/issues/4878 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139321 | https://github.com/earendil-works/pi/issues/4307 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-139518 | https://github.com/earendil-works/pi-mono/pull/4756 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-140261 | https://github.com/earendil-works/pi-mono/pull/4724 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-140445 | https://github.com/earendil-works/pi-mono/pull/4775 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141284 | https://github.com/earendil-works/pi/issues/4752 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141481 | https://github.com/earendil-works/pi/issues/4276 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-141822 | https://github.com/earendil-works/pi-mono/pull/4799 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142092 | https://github.com/earendil-works/pi/issues/4710 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142265 | https://github.com/earendil-works/pi/issues/4699 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142414 | https://github.com/earendil-works/pi/issues/4763 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142585 | https://github.com/earendil-works/pi-mono/pull/4759 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142789 | https://github.com/earendil-works/pi-mono/pull/4709 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-142996 | https://github.com/earendil-works/pi-mono/pull/4664 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143330 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143484 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143586 | https://github.com/earendil-works/pi/issues/4675 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143687 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143766 | https://github.com/earendil-works/pi/issues/4720 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-143965 | https://github.com/earendil-works/pi/issues/4793 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144201 | https://github.com/earendil-works/pi/issues/4681 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144423 | https://github.com/earendil-works/pi-mono/pull/4661 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144686 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144718 | https://github.com/earendil-works/pi/issues/4678 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-144876 | https://github.com/earendil-works/pi/issues/4612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145061 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145239 | https://github.com/earendil-works/pi/issues/4647 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145421 | https://github.com/earendil-works/pi/issues/4157 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145587 | https://github.com/earendil-works/pi/issues/4665 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-145763 | https://github.com/earendil-works/pi-mono/pull/4243 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146063 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146095 | https://github.com/earendil-works/pi/issues/4342 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146267 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146299 | https://github.com/earendil-works/pi/issues/4223 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146580 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146612 | https://github.com/earendil-works/pi/issues/4232 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146815 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-146847 | https://github.com/earendil-works/pi/issues/4251 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147068 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147100 | https://github.com/earendil-works/pi/issues/4505 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147304 | https://github.com/earendil-works/pi/issues/4650 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147363 | https://github.com/earendil-works/pi/issues/4652 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147422 | https://github.com/earendil-works/pi/issues/4653 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147601 | https://github.com/earendil-works/pi/issues/4623 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147738 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-147998 | https://github.com/earendil-works/pi/issues/4484 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148215 | https://github.com/earendil-works/pi-mono/pull/4541 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148413 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148445 | https://github.com/earendil-works/pi-mono/pull/4603 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148621 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148696 | https://github.com/earendil-works/pi-mono/pull/4622 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-148985 | https://github.com/earendil-works/pi/issues/4587 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149211 | https://github.com/earendil-works/pi/issues/4619 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149438 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149470 | https://github.com/earendil-works/pi/issues/4614 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-149726 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150281 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150357 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150494 | https://github.com/earendil-works/pi-mono/pull/3887 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150716 | https://github.com/earendil-works/pi-mono/pull/3624 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-150880 | https://github.com/earendil-works/pi/pull/4458 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151133 | https://github.com/earendil-works/pi/issues/4519 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151393 | https://github.com/earendil-works/pi/issues/4492 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151538 | https://github.com/earendil-works/pi/issues/4508 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151811 | https://github.com/earendil-works/pi/issues/4559 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-151966 | https://github.com/earendil-works/pi/issues/4534 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152114 | https://github.com/earendil-works/pi/issues/4553 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152291 | https://github.com/earendil-works/pi/issues/4583 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152470 | https://github.com/earendil-works/pi/issues/4510 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152715 | https://github.com/earendil-works/pi/issues/4503 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152855 | https://github.com/earendil-works/pi/issues/4429 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-152988 | https://github.com/earendil-works/pi/issues/4433 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153216 | https://github.com/earendil-works/pi-mono/pull/4426 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153611 | @earendil-works/pi-ai | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153813 | @earendil-works/pi-tui | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-153947 | https://github.com/earendil-works/pi/issues/4333 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154072 | https://github.com/earendil-works/pi/issues/4289 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154261 | https://github.com/earendil-works/pi/issues/4280 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154420 | earendil-works/pi-mono | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154449 | @earendil-works/ | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-154685 | @earendil-works/pi-coding-agent | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-155510 | https://github.com/earendil-works/pi-mono/pull/4190 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-155959 | https://github.com/earendil-works/pi-mono/pull/4244 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-156127 | https://github.com/earendil-works/pi-mono/pull/4162 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-156969 | https://github.com/earendil-works/pi-mono/pull/4234 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-157415 | https://github.com/earendil-works/pi-mono/issues/4184 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-157547 | https://github.com/earendil-works/pi-mono/issues/4218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233030 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233178 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/CHANGELOG.md@byte-233958 | Earendil | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/docs/containerization.md@byte-1147 | https://github.com/earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/docs/containerization.md@byte-1938 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/index.ts@byte-568 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/index.ts@byte-1194 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-215 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-576 | node_modules/@earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-658 | https://registry.npmjs.org/@earendil-works/gondolin/-/gondolin-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1138 | @earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1205 | @earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1276 | node_modules/@earendil-works/gondolin-krun-runner-darwin-arm64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1383 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-darwin-arm64/-/gondolin-krun-runner-darwin-arm64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1813 | node_modules/@earendil-works/gondolin-krun-runner-linux-x64 | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package-lock.json@byte-1917 | https://registry.npmjs.org/@earendil-works/gondolin-krun-runner-linux-x64/-/gondolin-krun-runner-linux-x64-0.12.0.tgz | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/examples/extensions/gondolin/package.json@byte-306 | @earendil-works/gondolin | External dependency | Published third-party dependency or npm-maintained nested dependency path; retire when dependency changes | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/core/tools/find.ts@byte-8995 | https://github.com/earendil-works/pi/issues/5960 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/migrations.ts@byte-2629 | https://github.com/earendil-works/pi-mono/issues/320 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/changelog.ts@byte-391 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/src/utils/child-process.ts@byte-1531 | earendil-works/pi#5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/changelog.test.ts@byte-1331 | https://github.com/earendil-works/pi-mono/pull/5167 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/2791-fswatch-error-crash.test.ts@byte-304 | https://github.com/earendil-works/pi-mono/issues/2791 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3302-find-path-glob.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3302 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/3303-find-nested-gitignore.test.ts@byte-315 | https://github.com/earendil-works/pi-mono/issues/3303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5080-signal-shutdown-extension-cleanup.test.ts@byte-453 | https://github.com/earendil-works/pi/issues/5080 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5303-bash-output-truncation.test.ts@byte-327 | https://github.com/earendil-works/pi/issues/5303 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5724-sigterm-signal-exit.test.ts@byte-169 | https://github.com/earendil-works/pi/issues/5724 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/5868-rpc-unknown-command-id.test.ts@byte-296 | https://github.com/earendil-works/pi/issues/5868 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/coding-agent/test/suite/regressions/6104-find-root-relativization.test.ts@byte-219 | https://github.com/earendil-works/pi/issues/6104 | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/protocol/CHANGELOG.md@byte-388 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/protocol/CHANGELOG.md@byte-666 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-322 | https://github.com/earendil-works/pi/pull/7708 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-701 | https://github.com/earendil-works/pi/pull/7644 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/server/CHANGELOG.md@byte-990 | https://github.com/earendil-works/pi/pull/6898 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-195 | @earendil-works/pi-storage-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-239 | @earendil-works/pi-session-backend-sqlite-node | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-817 | https://github.com/earendil-works/pi/pull/7655 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/session-backends/sqlite-node/CHANGELOG.md@byte-1139 | https://github.com/earendil-works/pi/pull/6594 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-198 | https://github.com/earendil-works/pi/issues/7735 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-377 | https://github.com/earendil-works/pi/issues/7725 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-1547 | https://github.com/earendil-works/pi/issues/7304 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-2350 | https://github.com/earendil-works/pi/pull/7361 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-3034 | https://github.com/earendil-works/pi/pull/6987 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-3932 | https://github.com/earendil-works/pi/issues/7574 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4242 | https://github.com/earendil-works/pi/pull/7550 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4374 | https://github.com/earendil-works/pi/pull/7581 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4527 | https://github.com/earendil-works/pi/pull/7612 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4649 | https://github.com/earendil-works/pi/pull/7657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-4971 | https://github.com/earendil-works/pi/pull/7262 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5243 | https://github.com/earendil-works/pi/pull/6958 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5452 | https://github.com/earendil-works/pi/pull/7015 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5779 | https://github.com/earendil-works/pi/pull/6790 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-5988 | https://github.com/earendil-works/pi/pull/6764 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6389 | https://github.com/earendil-works/pi/issues/6844 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6606 | https://github.com/earendil-works/pi-mono/pull/6697 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-6841 | https://github.com/earendil-works/pi-mono/pull/6523 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7185 | https://github.com/earendil-works/pi/pull/6397 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7437 | https://github.com/earendil-works/pi/issues/6105 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-7870 | https://github.com/earendil-works/pi/pull/5846 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8245 | https://github.com/earendil-works/pi/pull/5874 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8376 | https://github.com/earendil-works/pi/pull/5841 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8785 | https://github.com/earendil-works/pi/pull/5789 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-8989 | https://github.com/earendil-works/pi/pull/5385 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9229 | https://github.com/earendil-works/pi/issues/5297 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9469 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9528 | https://github.com/earendil-works/pi/issues/4415 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-9788 | https://github.com/earendil-works/pi/issues/5657 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10077 | https://github.com/earendil-works/pi/issues/5618 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10247 | https://github.com/earendil-works/pi/pull/5585 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10439 | https://github.com/earendil-works/pi/pull/5562 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10709 | https://github.com/earendil-works/pi/issues/4703 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-10866 | https://github.com/earendil-works/pi/pull/5283 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11067 | https://github.com/earendil-works/pi/issues/5494 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11264 | https://github.com/earendil-works/pi/issues/5495 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11550 | https://github.com/earendil-works/pi/issues/5454 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11738 | https://github.com/earendil-works/pi/issues/5188 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-11946 | https://github.com/earendil-works/pi/pull/5499 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12220 | https://github.com/earendil-works/pi/pull/5235 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12456 | https://github.com/earendil-works/pi/issues/5218 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12634 | https://github.com/earendil-works/pi-mono/issues/5185 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12788 | https://github.com/earendil-works/pi-mono/issues/5200 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-12930 | https://github.com/earendil-works/pi-mono/pull/5189 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13211 | https://github.com/earendil-works/pi/pull/5091 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13462 | https://github.com/earendil-works/pi/issues/5013 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13779 | https://github.com/earendil-works/pi/issues/4923 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-13953 | https://github.com/earendil-works/pi-mono/pull/5037 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14188 | https://github.com/earendil-works/pi-mono/pull/5022 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14292 | https://github.com/earendil-works/pi-mono/pull/5067 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14396 | https://github.com/earendil-works/pi-mono/pull/5068 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-14700 | https://github.com/earendil-works/pi/issues/4480 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15463 | https://github.com/earendil-works/pi-mono/pull/4327 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15629 | https://github.com/earendil-works/pi-mono/pull/4379 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-15805 | https://github.com/earendil-works/pi-mono/pull/4463 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-16008 | https://github.com/earendil-works/pi-mono/pull/4461 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/CHANGELOG.md@byte-16196 | https://github.com/earendil-works/pi-mono/pull/4482 | Immutable changelog | Packaged historical release record; retain immutable provenance | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/src/components/markdown.ts@byte-5102 | https://github.com/earendil-works/pi/issues/5825. | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/packages/tui/test/editor.test.ts@byte-80874 | earendil-works/pi#5496: | Upstream history | Original upstream provenance; retain while source or issue remains relevant | +| diffex-identity-source.tar.gz!diffex-0.2.0/scripts/release-notes.mjs@byte-478 | earendil-works | Supported migration behavior | Legacy repository matcher; maintainers retire with legacy-link normalization | | diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-407 | https://github.com/earendil-works/pi/issues/7152 | Immutable changelog | Packaged historical release record; retain immutable provenance | | diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-1659 | https://github.com/earendil-works/pi/issues/7128 | Immutable changelog | Packaged historical release record; retain immutable provenance | | diffex-darwin-arm64.tar.gz!diffex/CHANGELOG.md@byte-2379 | https://github.com/earendil-works/pi/issues/7731 | Immutable changelog | Packaged historical release record; retain immutable provenance | @@ -3076,5 +3076,5 @@ Rows marked unresolved are blocking findings, not allowlist exceptions. | diffexai-diffex-session-backend-sqlite-node-0.2.0.tgz | d23826ab601981f1782bb156b907f4398f0a9e435e98c052dd97194a18da6b2b | | diffexai-diffex-telemetry-0.2.0.tgz | 0f846a375378b6c795c44f9f57f9d89672423ef9a24e04160be69d10ac3a6afb | | diffexai-diffex-tui-0.2.0.tgz | 73f7bdbb9b7e16be100ff6d82a1292df34f805adec3249dde082e90066b1f2de | -| diffex-phase1-source.tar.gz | dc1cb7889f456343383147c5fab8ef90aea028062910c94c92108d8f43e154b2 | +| diffex-identity-source.tar.gz | dc1cb7889f456343383147c5fab8ef90aea028062910c94c92108d8f43e154b2 | | diffex-darwin-arm64.tar.gz | de2581b2ec6036e0b203c53a1d43b82d9e5bbb494aff286e15161e30ba7afa6b |