From f92ee8d64c201802ec06b59bccd1b1b097b6b49b Mon Sep 17 00:00:00 2001 From: ace-pm Date: Wed, 15 Apr 2026 22:56:33 +0200 Subject: [PATCH] =?UTF-8?q?Rename=20@sf-run/*=20=E2=86=92=20@singularity-f?= =?UTF-8?q?orge/*=20package=20scope?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - All 373 source files updated - Package.json scopes in all workspace packages - Loader workspace symlink dir updated - RpcClient import unified from pi-coding-agent (fixes type mismatch) - Scripts, configs, flake.nix updated - Workspace symlinks rebuilt --- flake.nix | 2 +- package.json | 10 ++--- packages/native/package.json | 2 +- packages/native/src/__tests__/diff.test.mjs | 2 +- packages/native/src/__tests__/fd.test.mjs | 2 +- packages/native/src/__tests__/glob.test.mjs | 2 +- packages/native/src/__tests__/grep.test.mjs | 2 +- .../native/src/__tests__/highlight.test.mjs | 2 +- packages/native/src/__tests__/html.test.mjs | 2 +- packages/native/src/__tests__/image.test.mjs | 2 +- .../native/src/__tests__/json-parse.test.mjs | 2 +- .../src/__tests__/module-compat.test.mjs | 4 +- packages/native/src/__tests__/ps.test.mjs | 2 +- packages/native/src/__tests__/text.test.mjs | 2 +- packages/native/src/__tests__/ttsr.test.mjs | 2 +- packages/native/src/__tests__/xxhash.test.mjs | 2 +- packages/native/src/index.ts | 2 +- packages/pi-agent-core/package.json | 2 +- packages/pi-agent-core/src/agent-loop.test.ts | 4 +- packages/pi-agent-core/src/agent-loop.ts | 2 +- packages/pi-agent-core/src/agent.test.ts | 2 +- packages/pi-agent-core/src/agent.ts | 2 +- packages/pi-agent-core/src/proxy.ts | 2 +- packages/pi-agent-core/src/types.ts | 2 +- packages/pi-ai/package.json | 2 +- packages/pi-ai/src/cli.ts | 12 +++--- packages/pi-ai/src/utils/json-parse.ts | 2 +- packages/pi-coding-agent/package.json | 2 +- packages/pi-coding-agent/src/cli.ts | 4 +- packages/pi-coding-agent/src/cli/args.ts | 2 +- .../src/cli/config-selector.ts | 2 +- .../pi-coding-agent/src/cli/file-processor.ts | 2 +- .../pi-coding-agent/src/cli/list-models.ts | 4 +- .../pi-coding-agent/src/cli/session-picker.ts | 2 +- .../agent-session-renderable-tools.test.ts | 2 +- .../pi-coding-agent/src/core/agent-session.ts | 8 ++-- .../pi-coding-agent/src/core/auth-storage.ts | 4 +- .../pi-coding-agent/src/core/bash-executor.ts | 2 +- .../src/core/chat-controller-ordering.test.ts | 28 ++++++------- .../src/core/compaction-orchestrator.ts | 6 +-- .../src/core/compaction-utils.test.ts | 2 +- .../core/compaction/branch-summarization.ts | 6 +-- .../src/core/compaction/compaction.test.ts | 4 +- .../src/core/compaction/compaction.ts | 6 +-- .../src/core/compaction/utils.ts | 4 +- packages/pi-coding-agent/src/core/defaults.ts | 2 +- .../src/core/export-html/index.ts | 2 +- .../src/core/export-html/tool-renderer.ts | 2 +- .../src/core/extensions/loader.ts | 42 +++++++++---------- .../src/core/extensions/runner.ts | 6 +-- .../src/core/extensions/types.ts | 10 ++--- .../src/core/extensions/wrapper.ts | 2 +- .../src/core/fallback-resolver.test.ts | 2 +- .../src/core/fallback-resolver.ts | 2 +- .../src/core/image-overflow-recovery.test.ts | 2 +- .../src/core/image-overflow-recovery.ts | 2 +- .../pi-coding-agent/src/core/keybindings.ts | 2 +- .../pi-coding-agent/src/core/lsp/index.ts | 2 +- packages/pi-coding-agent/src/core/messages.ts | 6 +-- .../src/core/model-registry-auth-mode.test.ts | 4 +- .../src/core/model-registry.ts | 4 +- .../model-resolver-initial-model-auth.test.ts | 2 +- .../src/core/model-resolver.ts | 4 +- .../src/core/retry-handler.test.ts | 2 +- .../pi-coding-agent/src/core/retry-handler.ts | 6 +-- packages/pi-coding-agent/src/core/sdk.ts | 6 +-- .../src/core/session-manager.ts | 4 +- .../src/core/settings-manager.ts | 2 +- .../src/core/skill-tool.test.ts | 2 +- .../pi-coding-agent/src/core/tools/bash.ts | 2 +- .../pi-coding-agent/src/core/tools/edit.ts | 2 +- .../pi-coding-agent/src/core/tools/find.ts | 4 +- .../pi-coding-agent/src/core/tools/grep.ts | 2 +- .../src/core/tools/hashline-edit.ts | 2 +- .../src/core/tools/hashline-read.ts | 4 +- .../src/core/tools/hashline.ts | 2 +- .../pi-coding-agent/src/core/tools/index.ts | 2 +- packages/pi-coding-agent/src/core/tools/ls.ts | 2 +- .../pi-coding-agent/src/core/tools/read.ts | 4 +- .../pi-coding-agent/src/core/tools/write.ts | 2 +- packages/pi-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-message.ts | 6 +-- .../modes/interactive/components/daxnuts.ts | 2 +- .../interactive/components/dynamic-border.ts | 4 +- .../components/extension-editor.ts | 2 +- .../interactive/components/extension-input.ts | 2 +- .../components/extension-selector.ts | 2 +- .../modes/interactive/components/footer.ts | 2 +- .../components/keybinding-hints.ts | 2 +- .../interactive/components/login-dialog.ts | 4 +- .../interactive/components/model-selector.ts | 4 +- .../interactive/components/oauth-selector.ts | 6 +-- .../components/provider-manager.ts | 2 +- .../components/scoped-models-selector.ts | 4 +- .../components/session-selector-search.ts | 2 +- .../components/session-selector.ts | 2 +- .../components/settings-selector.ts | 6 +-- .../components/show-images-selector.ts | 2 +- .../components/skill-invocation-message.ts | 2 +- .../interactive/components/theme-selector.ts | 2 +- .../components/thinking-selector.ts | 4 +- .../interactive/components/tool-execution.ts | 2 +- .../components/tree-render-utils.ts | 2 +- .../interactive/components/tree-selector.ts | 2 +- .../components/user-message-selector.ts | 2 +- .../interactive/components/user-message.ts | 2 +- .../interactive/components/visual-truncate.ts | 2 +- .../controllers/chat-controller.ts | 2 +- .../controllers/model-controller.ts | 2 +- .../src/modes/interactive/interactive-mode.ts | 14 +++---- .../interactive/slash-command-handlers.ts | 8 ++-- .../src/modes/interactive/theme/theme.ts | 8 ++-- .../pi-coding-agent/src/modes/print-mode.ts | 2 +- .../src/modes/rpc/remote-terminal.ts | 2 +- .../src/modes/rpc/rpc-client.ts | 4 +- .../src/modes/rpc/rpc-types.ts | 4 +- .../src/resources/extensions/memory/index.ts | 6 +-- .../src/utils/clipboard-image.ts | 4 +- .../src/utils/clipboard-native.ts | 6 +-- .../pi-coding-agent/src/utils/clipboard.ts | 2 +- .../src/utils/image-convert.ts | 2 +- .../pi-coding-agent/src/utils/image-resize.ts | 6 +-- .../pi-coding-agent/src/utils/proxy-server.ts | 2 +- packages/pi-tui/package.json | 2 +- packages/pi-tui/src/autocomplete.ts | 2 +- packages/pi-tui/src/terminal-image.ts | 2 +- packages/pi-tui/src/utils.ts | 2 +- scripts/bump-version.mjs | 4 +- scripts/dist-test-resolve.mjs | 16 +++---- scripts/link-workspace-packages.cjs | 18 ++++---- scripts/preview-dashboard.ts | 2 +- scripts/validate-pack.js | 20 ++++----- src/cli.ts | 2 +- src/headless-answers.ts | 2 +- src/headless-ui.ts | 2 +- src/headless.ts | 5 +-- src/loader.ts | 18 ++++---- src/mcp-server.ts | 2 +- src/onboarding.ts | 2 +- src/pi-migration.ts | 2 +- src/provider-migrations.ts | 2 +- src/resource-loader.ts | 22 +++++----- .../extensions/ask-user-questions.ts | 4 +- .../extensions/async-jobs/async-bash-tool.ts | 4 +- .../extensions/async-jobs/await-tool.ts | 2 +- .../extensions/async-jobs/cancel-job-tool.ts | 2 +- src/resources/extensions/async-jobs/index.ts | 2 +- src/resources/extensions/aws-auth/index.ts | 2 +- .../extensions/bg-shell/bg-shell-command.ts | 4 +- .../extensions/bg-shell/bg-shell-lifecycle.ts | 6 +-- .../extensions/bg-shell/bg-shell-tool.ts | 6 +-- src/resources/extensions/bg-shell/index.ts | 2 +- .../extensions/bg-shell/output-formatter.ts | 2 +- src/resources/extensions/bg-shell/overlay.ts | 4 +- .../extensions/bg-shell/process-manager.ts | 2 +- .../extensions/browser-tools/index.ts | 2 +- .../extensions/browser-tools/state.ts | 2 +- .../browser-tools/tools/action-cache.ts | 2 +- .../browser-tools/tools/assertions.ts | 4 +- .../extensions/browser-tools/tools/codegen.ts | 2 +- .../extensions/browser-tools/tools/device.ts | 2 +- .../extensions/browser-tools/tools/extract.ts | 2 +- .../extensions/browser-tools/tools/forms.ts | 2 +- .../browser-tools/tools/injection-detect.ts | 2 +- .../browser-tools/tools/inspection.ts | 4 +- .../extensions/browser-tools/tools/intent.ts | 4 +- .../browser-tools/tools/interaction.ts | 4 +- .../browser-tools/tools/navigation.ts | 2 +- .../browser-tools/tools/network-mock.ts | 2 +- .../extensions/browser-tools/tools/pages.ts | 2 +- .../extensions/browser-tools/tools/pdf.ts | 2 +- .../extensions/browser-tools/tools/refs.ts | 2 +- .../browser-tools/tools/screenshot.ts | 2 +- .../extensions/browser-tools/tools/session.ts | 2 +- .../browser-tools/tools/state-persistence.ts | 2 +- .../extensions/browser-tools/tools/verify.ts | 2 +- .../browser-tools/tools/visual-diff.ts | 2 +- .../extensions/browser-tools/tools/wait.ts | 4 +- .../extensions/browser-tools/tools/zoom.ts | 2 +- .../extensions/browser-tools/utils.ts | 2 +- .../extensions/claude-code-cli/index.ts | 2 +- .../extensions/claude-code-cli/package.json | 2 +- .../claude-code-cli/partial-builder.ts | 4 +- .../claude-code-cli/stream-adapter.ts | 8 ++-- .../tests/stream-adapter.test.ts | 2 +- src/resources/extensions/cmux/package.json | 2 +- src/resources/extensions/context7/index.ts | 6 +-- src/resources/extensions/genai-proxy/index.ts | 2 +- .../extensions/genai-proxy/proxy-command.ts | 2 +- .../extensions/genai-proxy/proxy-server.ts | 4 +- .../genai-proxy/tests/proxy-server.test.ts | 4 +- .../extensions/get-secrets-from-user.ts | 6 +-- src/resources/extensions/github-sync/index.ts | 6 +-- .../extensions/google-search/index.ts | 6 +-- src/resources/extensions/guardrails/index.ts | 2 +- src/resources/extensions/mac-tools/index.ts | 4 +- src/resources/extensions/mcp-client/index.ts | 6 +-- src/resources/extensions/ollama/index.ts | 2 +- .../extensions/ollama/ollama-chat-provider.ts | 4 +- .../extensions/ollama/ollama-commands.ts | 4 +- .../extensions/ollama/ollama-tool.ts | 4 +- .../extensions/remote-questions/config.ts | 2 +- .../remote-questions/remote-command.ts | 6 +-- .../search-the-web/command-search-provider.ts | 4 +- .../extensions/search-the-web/index.ts | 2 +- .../extensions/search-the-web/provider.ts | 2 +- .../search-the-web/tool-fetch-page.ts | 6 +-- .../search-the-web/tool-llm-context.ts | 8 ++-- .../extensions/search-the-web/tool-search.ts | 8 ++-- src/resources/extensions/sf-notify/index.ts | 2 +- .../extensions/sf-permissions/index.ts | 2 +- src/resources/extensions/sf-tui/color-band.ts | 2 +- src/resources/extensions/sf-tui/emoji.ts | 4 +- src/resources/extensions/sf-tui/footer.ts | 4 +- src/resources/extensions/sf-tui/header.ts | 4 +- src/resources/extensions/sf-tui/index.ts | 4 +- .../extensions/sf-tui/marketplace.ts | 4 +- src/resources/extensions/sf-tui/powerline.ts | 4 +- src/resources/extensions/sf-tui/shared.ts | 2 +- src/resources/extensions/sf-tui/stash.ts | 4 +- src/resources/extensions/sf-tui/welcome.ts | 4 +- .../extensions/sf-usage-bar/index.ts | 4 +- src/resources/extensions/sf/activity-log.ts | 2 +- src/resources/extensions/sf/auto-dashboard.ts | 4 +- .../extensions/sf/auto-direct-dispatch.ts | 2 +- .../extensions/sf/auto-model-selection.ts | 6 +-- src/resources/extensions/sf/auto-post-unit.ts | 2 +- src/resources/extensions/sf/auto-prompts.ts | 2 +- src/resources/extensions/sf/auto-recovery.ts | 2 +- src/resources/extensions/sf/auto-start.ts | 2 +- .../extensions/sf/auto-timeout-recovery.ts | 2 +- src/resources/extensions/sf/auto-timers.ts | 2 +- .../extensions/sf/auto-unit-closeout.ts | 2 +- .../extensions/sf/auto-verification.ts | 2 +- src/resources/extensions/sf/auto.ts | 2 +- src/resources/extensions/sf/auto/loop-deps.ts | 2 +- src/resources/extensions/sf/auto/loop.ts | 2 +- src/resources/extensions/sf/auto/phases.ts | 2 +- src/resources/extensions/sf/auto/run-unit.ts | 2 +- src/resources/extensions/sf/auto/session.ts | 4 +- src/resources/extensions/sf/auto/types.ts | 2 +- .../sf/bootstrap/agent-end-recovery.ts | 2 +- .../extensions/sf/bootstrap/db-tools.ts | 6 +-- .../extensions/sf/bootstrap/dynamic-tools.ts | 4 +- .../extensions/sf/bootstrap/journal-tools.ts | 2 +- .../sf/bootstrap/notify-interceptor.ts | 2 +- .../sf/bootstrap/provider-error-resume.ts | 2 +- .../extensions/sf/bootstrap/query-tools.ts | 2 +- .../sf/bootstrap/register-extension.ts | 2 +- .../extensions/sf/bootstrap/register-hooks.ts | 4 +- .../sf/bootstrap/register-shortcuts.ts | 4 +- .../extensions/sf/bootstrap/system-context.ts | 2 +- src/resources/extensions/sf/changelog.ts | 2 +- src/resources/extensions/sf/claude-import.ts | 4 +- .../extensions/sf/commands-add-tests.ts | 2 +- .../extensions/sf/commands-backlog.ts | 2 +- .../extensions/sf/commands-bootstrap.ts | 2 +- src/resources/extensions/sf/commands-cmux.ts | 2 +- .../extensions/sf/commands-codebase.ts | 2 +- .../extensions/sf/commands-config.ts | 4 +- src/resources/extensions/sf/commands-do.ts | 2 +- .../extensions/sf/commands-extensions.ts | 2 +- .../sf/commands-extract-learnings.ts | 2 +- .../extensions/sf/commands-handlers.ts | 2 +- .../extensions/sf/commands-inspect.ts | 2 +- src/resources/extensions/sf/commands-logs.ts | 2 +- .../extensions/sf/commands-maintenance.ts | 2 +- .../extensions/sf/commands-mcp-status.ts | 2 +- .../extensions/sf/commands-pr-branch.ts | 2 +- .../extensions/sf/commands-prefs-wizard.ts | 2 +- src/resources/extensions/sf/commands-rate.ts | 2 +- .../extensions/sf/commands-session-report.ts | 2 +- src/resources/extensions/sf/commands-ship.ts | 2 +- .../sf/commands-workflow-templates.ts | 2 +- .../extensions/sf/commands/context.ts | 2 +- .../extensions/sf/commands/dispatcher.ts | 2 +- .../extensions/sf/commands/handlers/auto.ts | 2 +- .../extensions/sf/commands/handlers/core.ts | 4 +- .../handlers/notifications-handler.ts | 2 +- .../extensions/sf/commands/handlers/ops.ts | 2 +- .../sf/commands/handlers/parallel.ts | 2 +- .../sf/commands/handlers/workflow.ts | 2 +- src/resources/extensions/sf/commands/index.ts | 2 +- src/resources/extensions/sf/config-overlay.ts | 4 +- .../extensions/sf/dashboard-overlay.ts | 4 +- .../extensions/sf/doctor-providers.ts | 4 +- src/resources/extensions/sf/env-utils.ts | 2 +- src/resources/extensions/sf/exit-command.ts | 2 +- src/resources/extensions/sf/export.ts | 2 +- src/resources/extensions/sf/forensics.ts | 2 +- .../extensions/sf/guided-flow-queue.ts | 2 +- src/resources/extensions/sf/guided-flow.ts | 2 +- src/resources/extensions/sf/health-widget.ts | 2 +- src/resources/extensions/sf/history.ts | 2 +- src/resources/extensions/sf/index.ts | 2 +- src/resources/extensions/sf/init-wizard.ts | 2 +- src/resources/extensions/sf/key-manager.ts | 6 +-- .../extensions/sf/memory-extractor.ts | 6 +-- src/resources/extensions/sf/metrics.ts | 4 +- .../extensions/sf/migrate/command.ts | 2 +- src/resources/extensions/sf/model-router.ts | 6 +-- .../extensions/sf/native-git-bridge.ts | 2 +- .../extensions/sf/native-parser-bridge.ts | 2 +- .../extensions/sf/notification-overlay.ts | 4 +- .../extensions/sf/notification-widget.ts | 2 +- .../extensions/sf/parallel-monitor-overlay.ts | 4 +- .../extensions/sf/queue-reorder-ui.ts | 6 +-- src/resources/extensions/sf/quick.ts | 2 +- src/resources/extensions/sf/rethink.ts | 2 +- .../sf/safety/gemini-permissions.ts | 2 +- src/resources/extensions/sf/service-tier.ts | 2 +- src/resources/extensions/sf/skill-catalog.ts | 2 +- .../sf/tests/budget-prediction.test.ts | 2 +- .../sf/tests/claude-import-tui.test.ts | 2 +- .../extensions/sf/tests/dist-redirect.mjs | 20 ++++----- .../milestone-transition-worktree.test.ts | 2 +- .../extensions/sf/tests/key-manager.test.ts | 2 +- .../sf/tests/lazy-pi-tui-import.test.ts | 6 +-- .../sf/tests/memory-leak-guards.test.ts | 2 +- .../extensions/sf/tests/resolve-ts-hooks.mjs | 4 +- .../sf/tests/skill-activation.test.ts | 2 +- .../extensions/sf/tests/token-profile.test.ts | 2 +- .../sf/tests/tool-compatibility.test.ts | 4 +- .../sf/tests/triage-dispatch.test.ts | 2 +- .../sf/tests/triage-resolution.test.ts | 2 +- .../sf/tests/uok-model-policy.test.ts | 2 +- src/resources/extensions/sf/triage-ui.ts | 2 +- src/resources/extensions/sf/undo.ts | 2 +- src/resources/extensions/sf/uok/kernel.ts | 2 +- .../extensions/sf/visualizer-overlay.ts | 4 +- .../extensions/sf/visualizer-views.ts | 4 +- .../extensions/sf/watch/header-renderer.ts | 2 +- .../extensions/sf/workflow-mcp-auto-prep.ts | 2 +- .../sf/worktree-command-bootstrap.ts | 2 +- .../extensions/sf/worktree-command.ts | 2 +- src/resources/extensions/shared/confirm-ui.ts | 6 +-- .../extensions/shared/format-utils.ts | 4 +- .../extensions/shared/interview-ui.ts | 6 +-- .../extensions/shared/layout-utils.ts | 6 +-- .../extensions/shared/next-action-ui.ts | 6 +-- src/resources/extensions/shared/sanitize.ts | 2 +- src/resources/extensions/shared/tui.ts | 2 +- src/resources/extensions/shared/ui.ts | 8 ++-- .../extensions/slash-commands/audit.ts | 2 +- .../extensions/slash-commands/clear.ts | 2 +- .../slash-commands/create-extension.ts | 4 +- .../slash-commands/create-slash-command.ts | 4 +- .../extensions/slash-commands/index.ts | 2 +- src/resources/extensions/subagent/agents.ts | 2 +- src/resources/extensions/subagent/index.ts | 10 ++--- .../extensions/subagent/isolation.ts | 2 +- src/resources/extensions/ttsr/index.ts | 4 +- src/resources/extensions/ttsr/ttsr-manager.ts | 2 +- .../extensions/universal-config/index.ts | 2 +- src/resources/extensions/voice/index.ts | 6 +-- src/security-overrides.ts | 2 +- src/tests/app-smoke.test.ts | 4 +- src/tests/extension-discovery.test.ts | 2 +- src/tests/headless-cli-surface.test.ts | 2 +- src/tests/headless-events.test.ts | 2 +- .../integration/web-bridge-contract.test.ts | 2 +- .../web-live-interaction-contract.test.ts | 2 +- .../web-live-state-contract.test.ts | 2 +- .../integration/web-mode-assembled.test.ts | 2 +- .../integration/web-mode-onboarding.test.ts | 2 +- .../web-onboarding-contract.test.ts | 2 +- .../web-session-parity-contract.test.ts | 2 +- src/tests/node-modules-symlink.test.ts | 4 +- src/tests/non-extension-library.test.ts | 2 +- src/tests/pi-ai-event-stream-factory.test.ts | 4 +- src/tests/resolve-ts-loader.test.ts | 2 +- src/tests/security-overrides.test.ts | 2 +- .../tui-autocomplete-ghost-lines.test.ts | 2 +- src/tests/tui-content-cursor-desync.test.ts | 2 +- src/tests/tui-non-tty-render-loop.test.ts | 6 +-- src/wizard.ts | 2 +- studio/package.json | 2 +- tsconfig.extensions.json | 14 +++---- web/next.config.mjs | 6 +-- 388 files changed, 670 insertions(+), 671 deletions(-) diff --git a/flake.nix b/flake.nix index e23420b47..805f532ff 100644 --- a/flake.nix +++ b/flake.nix @@ -39,7 +39,7 @@ echo " rustc: $(command -v rustc)" echo "" echo "Build native addon:" - echo " bun run --filter @sf-run/native build:native" + echo " bun run --filter @singularity-forge/native build:native" ''; }; }); diff --git a/package.json b/package.json index 31ebae4cf..7733403bb 100644 --- a/package.json +++ b/package.json @@ -41,11 +41,11 @@ }, "packageManager": "npm@10.9.3", "scripts": { - "build:pi-tui": "bun run --filter @sf-run/pi-tui build", - "build:pi-ai": "bun run --filter @sf-run/pi-ai build", - "build:pi-agent-core": "bun run --filter @sf-run/pi-agent-core build", - "build:pi-coding-agent": "bun run --filter @sf-run/pi-coding-agent build", - "build:native-pkg": "bun run --filter @sf-run/native build", + "build:pi-tui": "bun run --filter @singularity-forge/pi-tui build", + "build:pi-ai": "bun run --filter @singularity-forge/pi-ai build", + "build:pi-agent-core": "bun run --filter @singularity-forge/pi-agent-core build", + "build:pi-coding-agent": "bun run --filter @singularity-forge/pi-coding-agent build", + "build:native-pkg": "bun run --filter @singularity-forge/native build", "build:rpc-client": "bun run --filter @singularity-forge/rpc-client build", "build:pi": "npm run build:native-pkg && npm run build:pi-tui && npm run build:pi-ai && npm run build:pi-agent-core && npm run build:pi-coding-agent", "build:mcp-server": "bun run --filter @singularity-forge/mcp-server build", diff --git a/packages/native/package.json b/packages/native/package.json index 2ba8257ba..6a5580bce 100644 --- a/packages/native/package.json +++ b/packages/native/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/native", + "name": "@singularity-forge/native", "version": "2.74.0", "description": "Native Rust bindings for sf-run — high-performance native modules via N-API", "type": "commonjs", diff --git a/packages/native/src/__tests__/diff.test.mjs b/packages/native/src/__tests__/diff.test.mjs index 3b20391b7..2a720e19c 100644 --- a/packages/native/src/__tests__/diff.test.mjs +++ b/packages/native/src/__tests__/diff.test.mjs @@ -35,7 +35,7 @@ for (const candidate of candidates) { if (!native) { console.error( - "Native addon not found. Run `npm run build:native -w @sf-run/native` first.", + "Native addon not found. Run `npm run build:native -w @singularity-forge/native` first.", ); process.exit(1); } diff --git a/packages/native/src/__tests__/fd.test.mjs b/packages/native/src/__tests__/fd.test.mjs index 00f4d1c97..e0bce2ce3 100644 --- a/packages/native/src/__tests__/fd.test.mjs +++ b/packages/native/src/__tests__/fd.test.mjs @@ -28,7 +28,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/glob.test.mjs b/packages/native/src/__tests__/glob.test.mjs index f7129f064..0a205e500 100644 --- a/packages/native/src/__tests__/glob.test.mjs +++ b/packages/native/src/__tests__/glob.test.mjs @@ -37,7 +37,7 @@ for (const candidate of candidates) { if (!native) { console.error( - "Native addon not found. Run `npm run build:native -w @sf-run/native` first.", + "Native addon not found. Run `npm run build:native -w @singularity-forge/native` first.", ); process.exit(1); } diff --git a/packages/native/src/__tests__/grep.test.mjs b/packages/native/src/__tests__/grep.test.mjs index c26cbef8a..8d1abd68f 100644 --- a/packages/native/src/__tests__/grep.test.mjs +++ b/packages/native/src/__tests__/grep.test.mjs @@ -28,7 +28,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/highlight.test.mjs b/packages/native/src/__tests__/highlight.test.mjs index f6cda9c28..41c3c3dc2 100644 --- a/packages/native/src/__tests__/highlight.test.mjs +++ b/packages/native/src/__tests__/highlight.test.mjs @@ -26,7 +26,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/html.test.mjs b/packages/native/src/__tests__/html.test.mjs index 4f1d70330..2be998cb4 100644 --- a/packages/native/src/__tests__/html.test.mjs +++ b/packages/native/src/__tests__/html.test.mjs @@ -25,7 +25,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/image.test.mjs b/packages/native/src/__tests__/image.test.mjs index 45da73403..6d67c80b3 100644 --- a/packages/native/src/__tests__/image.test.mjs +++ b/packages/native/src/__tests__/image.test.mjs @@ -26,7 +26,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run 'npm run build:native -w @sf-run/native' first."); + console.error("Native addon not found. Run 'npm run build:native -w @singularity-forge/native' first."); process.exit(1); } diff --git a/packages/native/src/__tests__/json-parse.test.mjs b/packages/native/src/__tests__/json-parse.test.mjs index ed05ef8de..0dfaa3cb6 100644 --- a/packages/native/src/__tests__/json-parse.test.mjs +++ b/packages/native/src/__tests__/json-parse.test.mjs @@ -25,7 +25,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/module-compat.test.mjs b/packages/native/src/__tests__/module-compat.test.mjs index a957730ad..b55491024 100644 --- a/packages/native/src/__tests__/module-compat.test.mjs +++ b/packages/native/src/__tests__/module-compat.test.mjs @@ -1,5 +1,5 @@ /** - * Tests that the @sf-run/native package.json is correctly configured + * Tests that the @singularity-forge/native package.json is correctly configured * for Node.js module resolution (ESM/CJS compatibility). * * Regression test for #2861: "type": "module" + "import"-only export @@ -17,7 +17,7 @@ const __dirname = path.dirname(fileURLToPath(import.meta.url)); const pkgPath = path.resolve(__dirname, "..", "..", "package.json"); const pkg = JSON.parse(readFileSync(pkgPath, "utf8")); -describe("@sf-run/native module compatibility (#2861)", () => { +describe("@singularity-forge/native module compatibility (#2861)", () => { test("package.json must not declare type: module (compiled output is CJS-compatible)", () => { // The compiled output uses createRequire() to load .node addons. // Declaring "type": "module" forces Node.js to treat .js files as ESM, diff --git a/packages/native/src/__tests__/ps.test.mjs b/packages/native/src/__tests__/ps.test.mjs index 4ab57e237..7ebf5e004 100644 --- a/packages/native/src/__tests__/ps.test.mjs +++ b/packages/native/src/__tests__/ps.test.mjs @@ -27,7 +27,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/text.test.mjs b/packages/native/src/__tests__/text.test.mjs index 130d094bc..78276594d 100644 --- a/packages/native/src/__tests__/text.test.mjs +++ b/packages/native/src/__tests__/text.test.mjs @@ -35,7 +35,7 @@ for (const candidate of candidates) { if (!native) { console.error( - "Native addon not found. Run `npm run build:native -w @sf-run/native` first.", + "Native addon not found. Run `npm run build:native -w @singularity-forge/native` first.", ); process.exit(1); } diff --git a/packages/native/src/__tests__/ttsr.test.mjs b/packages/native/src/__tests__/ttsr.test.mjs index 912ee442c..c2e122744 100644 --- a/packages/native/src/__tests__/ttsr.test.mjs +++ b/packages/native/src/__tests__/ttsr.test.mjs @@ -26,7 +26,7 @@ for (const candidate of candidates) { } if (!native) { - console.error("Native addon not found. Run `npm run build:native -w @sf-run/native` first."); + console.error("Native addon not found. Run `npm run build:native -w @singularity-forge/native` first."); process.exit(1); } diff --git a/packages/native/src/__tests__/xxhash.test.mjs b/packages/native/src/__tests__/xxhash.test.mjs index f9a212bd4..59df383c1 100644 --- a/packages/native/src/__tests__/xxhash.test.mjs +++ b/packages/native/src/__tests__/xxhash.test.mjs @@ -1,6 +1,6 @@ import { describe, it } from "node:test"; import assert from "node:assert/strict"; -import { xxHash32, xxHash32Fallback } from "@sf-run/native/xxhash"; +import { xxHash32, xxHash32Fallback } from "@singularity-forge/native/xxhash"; /** * Reference values computed from the pure-JS xxHash32 implementation diff --git a/packages/native/src/index.ts b/packages/native/src/index.ts index 5e58fdd2d..cc87f0913 100644 --- a/packages/native/src/index.ts +++ b/packages/native/src/index.ts @@ -1,5 +1,5 @@ /** - * @sf-run/native — High-performance Rust modules exposed via N-API. + * @singularity-forge/native — High-performance Rust modules exposed via N-API. * * Modules: * - clipboard: native clipboard access (text + image) diff --git a/packages/pi-agent-core/package.json b/packages/pi-agent-core/package.json index d60b3a021..02afc7f0a 100644 --- a/packages/pi-agent-core/package.json +++ b/packages/pi-agent-core/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/pi-agent-core", + "name": "@singularity-forge/pi-agent-core", "version": "2.74.0", "description": "General-purpose agent core (vendored from pi-mono)", "type": "module", diff --git a/packages/pi-agent-core/src/agent-loop.test.ts b/packages/pi-agent-core/src/agent-loop.test.ts index f53a39782..799f3435f 100644 --- a/packages/pi-agent-core/src/agent-loop.test.ts +++ b/packages/pi-agent-core/src/agent-loop.test.ts @@ -9,8 +9,8 @@ import { fileURLToPath } from "node:url"; import { Type } from "@sinclair/typebox"; import { agentLoop, MAX_CONSECUTIVE_VALIDATION_FAILURES } from "./agent-loop.js"; import type { AgentContext, AgentLoopConfig, AgentTool, AgentEvent, AgentMessage } from "./types.js"; -import { AssistantMessageEventStream, EventStream } from "@sf-run/pi-ai"; -import type { AssistantMessage, AssistantMessageEvent, Model } from "@sf-run/pi-ai"; +import { AssistantMessageEventStream, EventStream } from "@singularity-forge/pi-ai"; +import type { AssistantMessage, AssistantMessageEvent, Model } from "@singularity-forge/pi-ai"; const __dirname = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/pi-agent-core/src/agent-loop.ts b/packages/pi-agent-core/src/agent-loop.ts index 3f18b99b6..9267e20d6 100644 --- a/packages/pi-agent-core/src/agent-loop.ts +++ b/packages/pi-agent-core/src/agent-loop.ts @@ -10,7 +10,7 @@ import { streamSimple, type ToolResultMessage, validateToolArguments, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import type { AgentContext, AgentEvent, diff --git a/packages/pi-agent-core/src/agent.test.ts b/packages/pi-agent-core/src/agent.test.ts index b0a73c119..9eba4db5b 100644 --- a/packages/pi-agent-core/src/agent.test.ts +++ b/packages/pi-agent-core/src/agent.test.ts @@ -9,7 +9,7 @@ import { readFileSync } from "node:fs"; import { join, dirname } from "node:path"; import { fileURLToPath } from "node:url"; import { Agent } from "./agent.ts"; -import { getModel, type AssistantMessageEventStream } from "@sf-run/pi-ai"; +import { getModel, type AssistantMessageEventStream } from "@singularity-forge/pi-ai"; const __dirname = dirname(fileURLToPath(import.meta.url)); diff --git a/packages/pi-agent-core/src/agent.ts b/packages/pi-agent-core/src/agent.ts index c9af2f751..d582154b4 100644 --- a/packages/pi-agent-core/src/agent.ts +++ b/packages/pi-agent-core/src/agent.ts @@ -13,7 +13,7 @@ import { type TextContent, type ThinkingBudgets, type Transport, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import { agentLoop, agentLoopContinue, ZERO_USAGE } from "./agent-loop.js"; import type { AgentContext, diff --git a/packages/pi-agent-core/src/proxy.ts b/packages/pi-agent-core/src/proxy.ts index b8872aedc..a5b1f8989 100644 --- a/packages/pi-agent-core/src/proxy.ts +++ b/packages/pi-agent-core/src/proxy.ts @@ -14,7 +14,7 @@ import { type SimpleStreamOptions, type StopReason, type ToolCall, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import { ZERO_USAGE } from "./agent-loop.js"; // Create stream class matching ProxyMessageEventStream diff --git a/packages/pi-agent-core/src/types.ts b/packages/pi-agent-core/src/types.ts index 3fddf2bfe..d7b407291 100644 --- a/packages/pi-agent-core/src/types.ts +++ b/packages/pi-agent-core/src/types.ts @@ -9,7 +9,7 @@ import type { TextContent, Tool, ToolResultMessage, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import type { Static, TSchema } from "@sinclair/typebox"; /** Stream function - can return sync or Promise for async config lookup */ diff --git a/packages/pi-ai/package.json b/packages/pi-ai/package.json index 07e67a5f1..8328269b2 100644 --- a/packages/pi-ai/package.json +++ b/packages/pi-ai/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/pi-ai", + "name": "@singularity-forge/pi-ai", "version": "2.74.0", "description": "Unified LLM API (vendored from pi-mono)", "type": "module", diff --git a/packages/pi-ai/src/cli.ts b/packages/pi-ai/src/cli.ts index c2e07f04d..2a33f23e7 100644 --- a/packages/pi-ai/src/cli.ts +++ b/packages/pi-ai/src/cli.ts @@ -64,7 +64,7 @@ async function main(): Promise { if (!command || command === "help" || command === "--help" || command === "-h") { const providerList = PROVIDERS.map((p) => ` ${p.id.padEnd(20)} ${p.name}`).join("\n"); - console.log(`Usage: npx @sf-run/pi-ai [provider] + console.log(`Usage: npx @singularity-forge/pi-ai [provider] Commands: login [provider] Login to an OAuth provider @@ -74,9 +74,9 @@ Providers: ${providerList} Examples: - npx @sf-run/pi-ai login # interactive provider selection - npx @sf-run/pi-ai login anthropic # login to specific provider - npx @sf-run/pi-ai list # list providers + npx @singularity-forge/pi-ai login # interactive provider selection + npx @singularity-forge/pi-ai login anthropic # login to specific provider + npx @singularity-forge/pi-ai list # list providers `); return; } @@ -113,7 +113,7 @@ Examples: if (!PROVIDERS.some((p) => p.id === provider)) { console.error(`Unknown provider: ${provider}`); - console.error(`Use 'npx @sf-run/pi-ai list' to see available providers`); + console.error(`Use 'npx @singularity-forge/pi-ai list' to see available providers`); process.exit(1); } @@ -123,7 +123,7 @@ Examples: } console.error(`Unknown command: ${command}`); - console.error(`Use 'npx @sf-run/pi-ai --help' for usage`); + console.error(`Use 'npx @singularity-forge/pi-ai --help' for usage`); process.exit(1); } diff --git a/packages/pi-ai/src/utils/json-parse.ts b/packages/pi-ai/src/utils/json-parse.ts index 1ce5ba8f9..782f25191 100644 --- a/packages/pi-ai/src/utils/json-parse.ts +++ b/packages/pi-ai/src/utils/json-parse.ts @@ -1,4 +1,4 @@ -import { parseStreamingJson as nativeParseStreamingJson } from "@sf-run/native"; +import { parseStreamingJson as nativeParseStreamingJson } from "@singularity-forge/native"; import { hasXmlParameterTags, hasYamlBulletLists, repairToolJson } from "./repair-tool-json.js"; /** diff --git a/packages/pi-coding-agent/package.json b/packages/pi-coding-agent/package.json index 3aec07d48..e231d4b8a 100644 --- a/packages/pi-coding-agent/package.json +++ b/packages/pi-coding-agent/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/pi-coding-agent", + "name": "@singularity-forge/pi-coding-agent", "version": "2.74.0", "description": "Coding agent CLI (vendored from pi-mono)", "type": "module", diff --git a/packages/pi-coding-agent/src/cli.ts b/packages/pi-coding-agent/src/cli.ts index 7a3f1401a..b8b722ddc 100644 --- a/packages/pi-coding-agent/src/cli.ts +++ b/packages/pi-coding-agent/src/cli.ts @@ -7,8 +7,8 @@ */ process.title = "pi"; -import { setBedrockProviderModule } from "@sf-run/pi-ai"; -import { bedrockProviderModule } from "@sf-run/pi-ai/bedrock-provider"; +import { setBedrockProviderModule } from "@singularity-forge/pi-ai"; +import { bedrockProviderModule } from "@singularity-forge/pi-ai/bedrock-provider"; import { EnvHttpProxyAgent, setGlobalDispatcher } from "undici"; import { main } from "./main.js"; diff --git a/packages/pi-coding-agent/src/cli/args.ts b/packages/pi-coding-agent/src/cli/args.ts index 4d0781266..f529771b2 100644 --- a/packages/pi-coding-agent/src/cli/args.ts +++ b/packages/pi-coding-agent/src/cli/args.ts @@ -2,7 +2,7 @@ * CLI argument parsing and help display */ -import type { ThinkingLevel } from "@sf-run/pi-agent-core"; +import type { ThinkingLevel } from "@singularity-forge/pi-agent-core"; import chalk from "chalk"; import { APP_NAME, CONFIG_DIR_NAME, ENV_AGENT_DIR } from "../config.js"; import { allTools, type ToolName } from "../core/tools/index.js"; diff --git a/packages/pi-coding-agent/src/cli/config-selector.ts b/packages/pi-coding-agent/src/cli/config-selector.ts index 1e7693c9d..695f5e3af 100644 --- a/packages/pi-coding-agent/src/cli/config-selector.ts +++ b/packages/pi-coding-agent/src/cli/config-selector.ts @@ -2,7 +2,7 @@ * TUI config selector for `pi config` command */ -import { ProcessTerminal, TUI } from "@sf-run/pi-tui"; +import { ProcessTerminal, TUI } from "@singularity-forge/pi-tui"; import type { ResolvedPaths } from "../core/package-manager.js"; import type { SettingsManager } from "../core/settings-manager.js"; import { ConfigSelectorComponent } from "../modes/interactive/components/config-selector.js"; diff --git a/packages/pi-coding-agent/src/cli/file-processor.ts b/packages/pi-coding-agent/src/cli/file-processor.ts index 1d7869ebe..32aff0e06 100644 --- a/packages/pi-coding-agent/src/cli/file-processor.ts +++ b/packages/pi-coding-agent/src/cli/file-processor.ts @@ -3,7 +3,7 @@ */ import { access, readFile, stat } from "node:fs/promises"; -import type { ImageContent } from "@sf-run/pi-ai"; +import type { ImageContent } from "@singularity-forge/pi-ai"; import chalk from "chalk"; import { resolve } from "path"; import { resolveReadPath } from "../core/tools/path-utils.js"; diff --git a/packages/pi-coding-agent/src/cli/list-models.ts b/packages/pi-coding-agent/src/cli/list-models.ts index 1267ceda4..4d907866e 100644 --- a/packages/pi-coding-agent/src/cli/list-models.ts +++ b/packages/pi-coding-agent/src/cli/list-models.ts @@ -2,8 +2,8 @@ * List available models with optional fuzzy search and discovery support */ -import type { Api, Model } from "@sf-run/pi-ai"; -import { fuzzyFilter } from "@sf-run/pi-tui"; +import type { Api, Model } from "@singularity-forge/pi-ai"; +import { fuzzyFilter } from "@singularity-forge/pi-tui"; import type { ModelRegistry } from "../core/model-registry.js"; export interface ListModelsOptions { diff --git a/packages/pi-coding-agent/src/cli/session-picker.ts b/packages/pi-coding-agent/src/cli/session-picker.ts index 42e5dd86b..937b419dd 100644 --- a/packages/pi-coding-agent/src/cli/session-picker.ts +++ b/packages/pi-coding-agent/src/cli/session-picker.ts @@ -2,7 +2,7 @@ * TUI session selector for --resume flag */ -import { ProcessTerminal, TUI } from "@sf-run/pi-tui"; +import { ProcessTerminal, TUI } from "@singularity-forge/pi-tui"; import { KeybindingsManager } from "../core/keybindings.js"; import type { SessionInfo, SessionListProgress } from "../core/session-manager.js"; import { SessionSelectorComponent } from "../modes/interactive/components/session-selector.js"; diff --git a/packages/pi-coding-agent/src/core/agent-session-renderable-tools.test.ts b/packages/pi-coding-agent/src/core/agent-session-renderable-tools.test.ts index 65fb2f43d..1106f7b98 100644 --- a/packages/pi-coding-agent/src/core/agent-session-renderable-tools.test.ts +++ b/packages/pi-coding-agent/src/core/agent-session-renderable-tools.test.ts @@ -4,7 +4,7 @@ import { tmpdir } from "node:os"; import { join } from "node:path"; import { afterEach, beforeEach, describe, it } from "node:test"; -import { Agent } from "@sf-run/pi-agent-core"; +import { Agent } from "@singularity-forge/pi-agent-core"; import { Type } from "@sinclair/typebox"; import type { ToolDefinition } from "./extensions/types.js"; import { AgentSession } from "./agent-session.js"; diff --git a/packages/pi-coding-agent/src/core/agent-session.ts b/packages/pi-coding-agent/src/core/agent-session.ts index 24066fb3c..d2d908952 100644 --- a/packages/pi-coding-agent/src/core/agent-session.ts +++ b/packages/pi-coding-agent/src/core/agent-session.ts @@ -22,9 +22,9 @@ import type { AgentState, AgentTool, ThinkingLevel, -} from "@sf-run/pi-agent-core"; -import type { AssistantMessage, ImageContent, Message, Model, TextContent } from "@sf-run/pi-ai"; -import { modelsAreEqual, resetApiProviders, supportsXhigh } from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-agent-core"; +import type { AssistantMessage, ImageContent, Message, Model, TextContent } from "@singularity-forge/pi-ai"; +import { modelsAreEqual, resetApiProviders, supportsXhigh } from "@singularity-forge/pi-ai"; import { Type } from "@sinclair/typebox"; import { getDocsPath } from "../config.js"; import { getErrorMessage } from "../utils/error.js"; @@ -305,7 +305,7 @@ export class AgentSession { // Whether model changes should write defaultProvider/defaultModel to settings.json. // Defaults to false — callers must explicitly opt into persistence. This is the - // safe default for SDK consumers: a third party building on @sf-run/pi-coding-agent + // safe default for SDK consumers: a third party building on @singularity-forge/pi-coding-agent // should not silently mutate the user's global settings just by switching models. // Interactive CLI entry points (sf wrapper's interactive branch and pi main's // isInteractive branch) explicitly set this to true so user model picks still diff --git a/packages/pi-coding-agent/src/core/auth-storage.ts b/packages/pi-coding-agent/src/core/auth-storage.ts index 244f72462..fb394b3a1 100644 --- a/packages/pi-coding-agent/src/core/auth-storage.ts +++ b/packages/pi-coding-agent/src/core/auth-storage.ts @@ -14,8 +14,8 @@ import { type OAuthCredentials, type OAuthLoginCallbacks, type OAuthProviderId, -} from "@sf-run/pi-ai"; -import { getOAuthApiKey, getOAuthProvider, getOAuthProviders } from "@sf-run/pi-ai/oauth"; +} from "@singularity-forge/pi-ai"; +import { getOAuthApiKey, getOAuthProvider, getOAuthProviders } from "@singularity-forge/pi-ai/oauth"; import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "fs"; import { dirname, join } from "path"; import { getAgentDir } from "../config.js"; diff --git a/packages/pi-coding-agent/src/core/bash-executor.ts b/packages/pi-coding-agent/src/core/bash-executor.ts index 0fabea790..21b36f939 100644 --- a/packages/pi-coding-agent/src/core/bash-executor.ts +++ b/packages/pi-coding-agent/src/core/bash-executor.ts @@ -29,7 +29,7 @@ function registerTempCleanup(): void { } }); } -import { processStreamChunk, type StreamState } from "@sf-run/native"; +import { processStreamChunk, type StreamState } from "@singularity-forge/native"; import { getShellConfig, getShellEnv, killProcessTree, sanitizeCommand } from "../utils/shell.js"; import type { BashOperations } from "./tools/bash.js"; import { DEFAULT_MAX_BYTES, truncateTail } from "./tools/truncate.js"; diff --git a/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts b/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts index 434a378e4..f61f27c9b 100644 --- a/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts +++ b/packages/pi-coding-agent/src/core/chat-controller-ordering.test.ts @@ -97,7 +97,7 @@ function createHost() { test("chat-controller renders content blocks in content[] index order (tool-first stream)", async () => { // ToolExecutionComponent uses the global theme singleton. // Install a minimal no-op theme implementation for this unit test. - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -166,7 +166,7 @@ test("chat-controller renders content blocks in content[] index order (tool-firs }); test("chat-controller renders serverToolUse before trailing text matching content[] index order", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -235,7 +235,7 @@ test("chat-controller renders serverToolUse before trailing text matching conten }); test("chat-controller keeps pre-tool prose visible until post-tool prose arrives, then prunes it", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -326,7 +326,7 @@ test("chat-controller keeps pre-tool prose visible until post-tool prose arrives }); test("chat-controller keeps pre-tool thinking visible for claude-code MCP turns without post-tool prose", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -393,7 +393,7 @@ test("chat-controller keeps pre-tool thinking visible for claude-code MCP turns }); test("chat-controller prunes orphaned provisional text after claude-code sub-turn shrink when MCP tools appear", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -494,7 +494,7 @@ test("chat-controller prunes orphaned provisional text after claude-code sub-tur }); test("chat-controller pins latest assistant text above editor when tool calls are present", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -548,7 +548,7 @@ test("chat-controller pins latest assistant text above editor when tool calls ar }); test("chat-controller clears pinned zone when a new assistant message starts", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -598,7 +598,7 @@ test("chat-controller clears pinned zone when a new assistant message starts", a }); test("chat-controller clears pinned zone when the agent turn ends", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -646,7 +646,7 @@ test("chat-controller clears pinned zone when the agent turn ends", async () => }); test("chat-controller clears pinned zone when assistant message ends", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -696,7 +696,7 @@ test("chat-controller clears pinned zone when assistant message ends", async () }); test("chat-controller does not pin when there are no tool calls", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -731,7 +731,7 @@ test("chat-controller does not pin when there are no tool calls", async () => { // Expected chatContainer order: textRun(A), toolExec(T1), textRun(B), toolExec(T2), textRun(C) // Each AssistantMessageComponent must render ONLY its own text — no duplication after message_end. test("chat-controller renders interleaved text and tool blocks in content[] index order (#4144)", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -844,7 +844,7 @@ test("chat-controller renders interleaved text and tool blocks in content[] inde }); test("chat-controller does not duplicate text when content is [text, tool, text] (interleaved stream)", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -924,7 +924,7 @@ test("chat-controller does not duplicate text when content is [text, tool, text] // sub-turn children must stay frozen; new sub-turn segments must append after // them, and the pinned "Latest Output" mirror must re-evaluate for the new sub-turn. test("chat-controller freezes prior sub-turn and appends new segments when content shrinks", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, @@ -1026,7 +1026,7 @@ test("chat-controller freezes prior sub-turn and appends new segments when conte // pinned "Latest Output" mirror can display text from the new sub-turn instead // of staying frozen on a stale snapshot (the "bottom green stays" symptom). test("chat-controller updates pinned zone after sub-turn shrink", async () => { - (globalThis as any)[Symbol.for("@sf-run/pi-coding-agent:theme")] = { + (globalThis as any)[Symbol.for("@singularity-forge/pi-coding-agent:theme")] = { fg: (_key: string, text: string) => text, bg: (_key: string, text: string) => text, bold: (text: string) => text, diff --git a/packages/pi-coding-agent/src/core/compaction-orchestrator.ts b/packages/pi-coding-agent/src/core/compaction-orchestrator.ts index 2c3e2dab4..88a23f414 100644 --- a/packages/pi-coding-agent/src/core/compaction-orchestrator.ts +++ b/packages/pi-coding-agent/src/core/compaction-orchestrator.ts @@ -9,9 +9,9 @@ * - Branch summarization abort coordination */ -import type { Agent } from "@sf-run/pi-agent-core"; -import type { AssistantMessage, Model } from "@sf-run/pi-ai"; -import { isContextOverflow } from "@sf-run/pi-ai"; +import type { Agent } from "@singularity-forge/pi-agent-core"; +import type { AssistantMessage, Model } from "@singularity-forge/pi-ai"; +import { isContextOverflow } from "@singularity-forge/pi-ai"; import { type CompactionResult, calculateContextTokens, diff --git a/packages/pi-coding-agent/src/core/compaction-utils.test.ts b/packages/pi-coding-agent/src/core/compaction-utils.test.ts index 4b1931c4b..0cbe18015 100644 --- a/packages/pi-coding-agent/src/core/compaction-utils.test.ts +++ b/packages/pi-coding-agent/src/core/compaction-utils.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import test from "node:test"; -import type { Message } from "@sf-run/pi-ai"; +import type { Message } from "@singularity-forge/pi-ai"; import { serializeConversation } from "./compaction/index.js"; diff --git a/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts b/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts index c9cffec1d..8d7c7b1ab 100644 --- a/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts +++ b/packages/pi-coding-agent/src/core/compaction/branch-summarization.ts @@ -5,9 +5,9 @@ * a summary of the branch being left so context isn't lost. */ -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { Model } from "@sf-run/pi-ai"; -import { completeSimple } from "@sf-run/pi-ai"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { Model } from "@singularity-forge/pi-ai"; +import { completeSimple } from "@singularity-forge/pi-ai"; import { COMPACTION_RESERVE_TOKENS } from "../constants.js"; import { convertToLlm } from "../messages.js"; import type { ReadonlySessionManager, SessionEntry } from "../session-manager.js"; diff --git a/packages/pi-coding-agent/src/core/compaction/compaction.test.ts b/packages/pi-coding-agent/src/core/compaction/compaction.test.ts index 25389eb75..99198aff3 100644 --- a/packages/pi-coding-agent/src/core/compaction/compaction.test.ts +++ b/packages/pi-coding-agent/src/core/compaction/compaction.test.ts @@ -6,8 +6,8 @@ import assert from "node:assert/strict"; import { describe, it, mock } from "node:test"; -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { Model, AssistantMessage } from "@sf-run/pi-ai"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { Model, AssistantMessage } from "@singularity-forge/pi-ai"; import { generateSummary, estimateTokens, chunkMessages } from "./compaction.js"; diff --git a/packages/pi-coding-agent/src/core/compaction/compaction.ts b/packages/pi-coding-agent/src/core/compaction/compaction.ts index 6dcab68cc..47a7b8f5c 100644 --- a/packages/pi-coding-agent/src/core/compaction/compaction.ts +++ b/packages/pi-coding-agent/src/core/compaction/compaction.ts @@ -5,9 +5,9 @@ * and after compaction the session is reloaded. */ -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { AssistantMessage, Model, Usage } from "@sf-run/pi-ai"; -import { completeSimple } from "@sf-run/pi-ai"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { AssistantMessage, Model, Usage } from "@singularity-forge/pi-ai"; +import { completeSimple } from "@singularity-forge/pi-ai"; import { COMPACTION_KEEP_RECENT_TOKENS, COMPACTION_RESERVE_TOKENS } from "../constants.js"; import { convertToLlm } from "../messages.js"; import type { CompactionEntry, SessionEntry } from "../session-manager.js"; diff --git a/packages/pi-coding-agent/src/core/compaction/utils.ts b/packages/pi-coding-agent/src/core/compaction/utils.ts index 10893c90c..c2911f360 100644 --- a/packages/pi-coding-agent/src/core/compaction/utils.ts +++ b/packages/pi-coding-agent/src/core/compaction/utils.ts @@ -2,8 +2,8 @@ * Shared utilities for compaction and branch summarization. */ -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { Message } from "@sf-run/pi-ai"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { Message } from "@singularity-forge/pi-ai"; import { TOOL_RESULT_MAX_CHARS } from "../constants.js"; import { createBranchSummaryMessage, diff --git a/packages/pi-coding-agent/src/core/defaults.ts b/packages/pi-coding-agent/src/core/defaults.ts index 029209cb0..261608a72 100644 --- a/packages/pi-coding-agent/src/core/defaults.ts +++ b/packages/pi-coding-agent/src/core/defaults.ts @@ -1,3 +1,3 @@ -import type { ThinkingLevel } from "@sf-run/pi-agent-core"; +import type { ThinkingLevel } from "@singularity-forge/pi-agent-core"; export const DEFAULT_THINKING_LEVEL: ThinkingLevel = "medium"; diff --git a/packages/pi-coding-agent/src/core/export-html/index.ts b/packages/pi-coding-agent/src/core/export-html/index.ts index a6e58faf5..478d27e1b 100644 --- a/packages/pi-coding-agent/src/core/export-html/index.ts +++ b/packages/pi-coding-agent/src/core/export-html/index.ts @@ -1,4 +1,4 @@ -import type { AgentState } from "@sf-run/pi-agent-core"; +import type { AgentState } from "@singularity-forge/pi-agent-core"; import { existsSync, readFileSync, writeFileSync } from "fs"; import { basename, join } from "path"; import { APP_NAME, getExportTemplateDir } from "../../config.js"; diff --git a/packages/pi-coding-agent/src/core/export-html/tool-renderer.ts b/packages/pi-coding-agent/src/core/export-html/tool-renderer.ts index e558353ee..041bc102e 100644 --- a/packages/pi-coding-agent/src/core/export-html/tool-renderer.ts +++ b/packages/pi-coding-agent/src/core/export-html/tool-renderer.ts @@ -5,7 +5,7 @@ * and converting the ANSI output to HTML. */ -import type { ImageContent, TextContent } from "@sf-run/pi-ai"; +import type { ImageContent, TextContent } from "@singularity-forge/pi-ai"; import type { Theme } from "../../modes/interactive/theme/theme.js"; import type { ToolDefinition } from "../extensions/types.js"; import { ansiLinesToHtml } from "./ansi-to-html.js"; diff --git a/packages/pi-coding-agent/src/core/extensions/loader.ts b/packages/pi-coding-agent/src/core/extensions/loader.ts index 5c7385623..595b83ea0 100644 --- a/packages/pi-coding-agent/src/core/extensions/loader.ts +++ b/packages/pi-coding-agent/src/core/extensions/loader.ts @@ -10,11 +10,11 @@ import * as os from "node:os"; import * as path from "node:path"; import { fileURLToPath } from "node:url"; import { createJiti } from "@mariozechner/jiti"; -import * as _bundledPiAgentCore from "@sf-run/pi-agent-core"; -import * as _bundledPiAi from "@sf-run/pi-ai"; -import * as _bundledPiAiOauth from "@sf-run/pi-ai/oauth"; -import type { KeyId } from "@sf-run/pi-tui"; -import * as _bundledPiTui from "@sf-run/pi-tui"; +import * as _bundledPiAgentCore from "@singularity-forge/pi-agent-core"; +import * as _bundledPiAi from "@singularity-forge/pi-ai"; +import * as _bundledPiAiOauth from "@singularity-forge/pi-ai/oauth"; +import type { KeyId } from "@singularity-forge/pi-tui"; +import * as _bundledPiTui from "@singularity-forge/pi-tui"; // Static imports of packages that extensions may use. // These MUST be static so Bun bundles them into the compiled binary. // The virtualModules option then makes them available to extensions. @@ -31,7 +31,7 @@ import * as _bundledMcpServerStreamableHttp from "@modelcontextprotocol/sdk/serv import * as _bundledMcpTypes from "@modelcontextprotocol/sdk/types.js"; import { getAgentDir, isBunBinary } from "../../config.js"; // NOTE: This import works because loader.ts exports are NOT re-exported from index.ts, -// avoiding a circular dependency. Extensions can import from "@sf-run/pi-coding-agent. +// avoiding a circular dependency. Extensions can import from "@singularity-forge/pi-coding-agent. import * as _bundledPiCodingAgent from "../../index.js"; import { createEventBus, type EventBus } from "../event-bus.js"; import type { ExecOptions } from "../exec.js"; @@ -58,11 +58,11 @@ import type { */ const STATIC_BUNDLED_MODULES: Record = { "@sinclair/typebox": _bundledTypebox, - "@sf-run/pi-agent-core": _bundledPiAgentCore, - "@sf-run/pi-tui": _bundledPiTui, - "@sf-run/pi-ai": _bundledPiAi, - "@sf-run/pi-ai/oauth": _bundledPiAiOauth, - "@sf-run/pi-coding-agent": _bundledPiCodingAgent, + "@singularity-forge/pi-agent-core": _bundledPiAgentCore, + "@singularity-forge/pi-tui": _bundledPiTui, + "@singularity-forge/pi-ai": _bundledPiAi, + "@singularity-forge/pi-ai/oauth": _bundledPiAiOauth, + "@singularity-forge/pi-coding-agent": _bundledPiCodingAgent, "yaml": _bundledYaml, "@modelcontextprotocol/sdk/client": _bundledMcpClient, "@modelcontextprotocol/sdk/client/stdio": _bundledMcpStdio, @@ -324,19 +324,19 @@ function getAliases(): Record { // Auto-discovered subpath exports (lowest priority — overridden by manual entries below) ...autoDiscovered, // Manual entries for workspace packages and packages needing special resolution - "@sf-run/pi-coding-agent": packageIndex, - "@sf-run/pi-agent-core": resolveWorkspaceOrImport("agent/dist/index.js", "@sf-run/pi-agent-core"), - "@sf-run/pi-tui": resolveWorkspaceOrImport("tui/dist/index.js", "@sf-run/pi-tui"), - "@sf-run/pi-ai": resolveWorkspaceOrImport("ai/dist/index.js", "@sf-run/pi-ai"), - "@sf-run/pi-ai/oauth": resolveWorkspaceOrImport("ai/dist/oauth.js", "@sf-run/pi-ai/oauth"), + "@singularity-forge/pi-coding-agent": packageIndex, + "@singularity-forge/pi-agent-core": resolveWorkspaceOrImport("agent/dist/index.js", "@singularity-forge/pi-agent-core"), + "@singularity-forge/pi-tui": resolveWorkspaceOrImport("tui/dist/index.js", "@singularity-forge/pi-tui"), + "@singularity-forge/pi-ai": resolveWorkspaceOrImport("ai/dist/index.js", "@singularity-forge/pi-ai"), + "@singularity-forge/pi-ai/oauth": resolveWorkspaceOrImport("ai/dist/oauth.js", "@singularity-forge/pi-ai/oauth"), "@sinclair/typebox": typeboxRoot, "yaml": yamlRoot, // Aliases for external PI ecosystem packages that import from the original scope "@mariozechner/pi-coding-agent": packageIndex, - "@mariozechner/pi-agent-core": resolveWorkspaceOrImport("agent/dist/index.js", "@sf-run/pi-agent-core"), - "@mariozechner/pi-tui": resolveWorkspaceOrImport("tui/dist/index.js", "@sf-run/pi-tui"), - "@mariozechner/pi-ai": resolveWorkspaceOrImport("ai/dist/index.js", "@sf-run/pi-ai"), - "@mariozechner/pi-ai/oauth": resolveWorkspaceOrImport("ai/dist/oauth.js", "@sf-run/pi-ai/oauth"), + "@mariozechner/pi-agent-core": resolveWorkspaceOrImport("agent/dist/index.js", "@singularity-forge/pi-agent-core"), + "@mariozechner/pi-tui": resolveWorkspaceOrImport("tui/dist/index.js", "@singularity-forge/pi-tui"), + "@mariozechner/pi-ai": resolveWorkspaceOrImport("ai/dist/index.js", "@singularity-forge/pi-ai"), + "@mariozechner/pi-ai/oauth": resolveWorkspaceOrImport("ai/dist/oauth.js", "@singularity-forge/pi-ai/oauth"), }; return _aliases; @@ -647,7 +647,7 @@ export function containsTypeScriptSyntax(source: string): boolean { * Shared jiti instance for loading extension modules. * * Before this fix (#2108), each extension created a NEW jiti instance with - * `moduleCache: false`, causing shared dependencies (e.g. @sf-run/pi-agent-core) + * `moduleCache: false`, causing shared dependencies (e.g. @singularity-forge/pi-agent-core) * to be recompiled for every extension — turning a ~3s parallel load into a * ~15-30s serial compilation bottleneck. * diff --git a/packages/pi-coding-agent/src/core/extensions/runner.ts b/packages/pi-coding-agent/src/core/extensions/runner.ts index 8961478fc..c0f2f9ff6 100644 --- a/packages/pi-coding-agent/src/core/extensions/runner.ts +++ b/packages/pi-coding-agent/src/core/extensions/runner.ts @@ -2,9 +2,9 @@ * Extension runner - executes extensions and manages their lifecycle. */ -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { ImageContent, Model } from "@sf-run/pi-ai"; -import type { KeyId } from "@sf-run/pi-tui"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { ImageContent, Model } from "@singularity-forge/pi-ai"; +import type { KeyId } from "@singularity-forge/pi-tui"; import { type Theme, theme } from "../../modes/interactive/theme/theme.js"; import type { ResourceDiagnostic } from "../diagnostics.js"; import type { KeyAction, KeybindingsConfig } from "../keybindings.js"; diff --git a/packages/pi-coding-agent/src/core/extensions/types.ts b/packages/pi-coding-agent/src/core/extensions/types.ts index ba46551c8..3aadf88ec 100644 --- a/packages/pi-coding-agent/src/core/extensions/types.ts +++ b/packages/pi-coding-agent/src/core/extensions/types.ts @@ -13,7 +13,7 @@ import type { AgentToolResult, AgentToolUpdateCallback, ThinkingLevel, -} from "@sf-run/pi-agent-core"; +} from "@singularity-forge/pi-agent-core"; import type { Api, AssistantMessageEvent, @@ -26,7 +26,7 @@ import type { SimpleStreamOptions, TextContent, ToolResultMessage, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import type { AutocompleteItem, Component, @@ -36,7 +36,7 @@ import type { OverlayHandle, OverlayOptions, TUI, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import type { Static, TSchema } from "@sinclair/typebox"; import type { Theme } from "../../modes/interactive/theme/theme.js"; import type { AuthStorage } from "../auth-storage.js"; @@ -195,12 +195,12 @@ export interface ExtensionUIContext { * - `keybindings`: KeybindingsManager for app-level keybindings * * For full app keybinding support (escape, ctrl+d, model switching, etc.), - * extend `CustomEditor` from `@sf-run/pi-coding-agent` and call + * extend `CustomEditor` from `@singularity-forge/pi-coding-agent` and call * `super.handleInput(data)` for keys you don't handle. * * @example * ```ts - * import { CustomEditor } from "@sf-run/pi-coding-agent"; + * import { CustomEditor } from "@singularity-forge/pi-coding-agent"; * * class VimEditor extends CustomEditor { * private mode: "normal" | "insert" = "insert"; diff --git a/packages/pi-coding-agent/src/core/extensions/wrapper.ts b/packages/pi-coding-agent/src/core/extensions/wrapper.ts index 63fedf4c7..ddfbac640 100644 --- a/packages/pi-coding-agent/src/core/extensions/wrapper.ts +++ b/packages/pi-coding-agent/src/core/extensions/wrapper.ts @@ -2,7 +2,7 @@ * Tool wrappers for extensions. */ -import type { AgentTool, AgentToolUpdateCallback } from "@sf-run/pi-agent-core"; +import type { AgentTool, AgentToolUpdateCallback } from "@singularity-forge/pi-agent-core"; import type { ExtensionRunner } from "./runner.js"; import type { RegisteredTool, ToolCallEventResult } from "./types.js"; diff --git a/packages/pi-coding-agent/src/core/fallback-resolver.test.ts b/packages/pi-coding-agent/src/core/fallback-resolver.test.ts index 10443803e..3a9f9b131 100644 --- a/packages/pi-coding-agent/src/core/fallback-resolver.test.ts +++ b/packages/pi-coding-agent/src/core/fallback-resolver.test.ts @@ -4,7 +4,7 @@ import { describe, it, beforeEach, mock } from "node:test"; import assert from "node:assert/strict"; import { FallbackResolver } from "./fallback-resolver.js"; -import type { Api, Model } from "@sf-run/pi-ai"; +import type { Api, Model } from "@singularity-forge/pi-ai"; import type { AuthStorage } from "./auth-storage.js"; import type { ModelRegistry } from "./model-registry.js"; import type { FallbackChainEntry, SettingsManager } from "./settings-manager.js"; diff --git a/packages/pi-coding-agent/src/core/fallback-resolver.ts b/packages/pi-coding-agent/src/core/fallback-resolver.ts index 1798ef63c..e5532f2f4 100644 --- a/packages/pi-coding-agent/src/core/fallback-resolver.ts +++ b/packages/pi-coding-agent/src/core/fallback-resolver.ts @@ -9,7 +9,7 @@ * restoration: checking if a higher-priority provider has recovered before each request. */ -import type { Api, Model } from "@sf-run/pi-ai"; +import type { Api, Model } from "@singularity-forge/pi-ai"; import type { AuthStorage, UsageLimitErrorType } from "./auth-storage.js"; import type { ModelRegistry } from "./model-registry.js"; import type { FallbackChainEntry, SettingsManager } from "./settings-manager.js"; diff --git a/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts b/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts index 4067389cb..db66ae411 100644 --- a/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts +++ b/packages/pi-coding-agent/src/core/image-overflow-recovery.test.ts @@ -5,7 +5,7 @@ import { MANY_IMAGE_MAX_DIMENSION, downsizeConversationImages, } from "./image-overflow-recovery.js"; -import type { Message } from "@sf-run/pi-ai"; +import type { Message } from "@singularity-forge/pi-ai"; // ─── isImageDimensionError ──────────────────────────────────────────────────── diff --git a/packages/pi-coding-agent/src/core/image-overflow-recovery.ts b/packages/pi-coding-agent/src/core/image-overflow-recovery.ts index 7b5227998..3af9220f2 100644 --- a/packages/pi-coding-agent/src/core/image-overflow-recovery.ts +++ b/packages/pi-coding-agent/src/core/image-overflow-recovery.ts @@ -10,7 +10,7 @@ * @see https://github.com/singularity-forge/sf-run/issues/2874 */ -import type { Message, ImageContent, TextContent } from "@sf-run/pi-ai"; +import type { Message, ImageContent, TextContent } from "@singularity-forge/pi-ai"; /** * Maximum image dimension (px) that the Anthropic API allows in many-image diff --git a/packages/pi-coding-agent/src/core/keybindings.ts b/packages/pi-coding-agent/src/core/keybindings.ts index adccddd23..f2df75b76 100644 --- a/packages/pi-coding-agent/src/core/keybindings.ts +++ b/packages/pi-coding-agent/src/core/keybindings.ts @@ -6,7 +6,7 @@ import { type KeyId, matchesKey, setEditorKeybindings, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { existsSync, readFileSync } from "fs"; import { join } from "path"; import { getAgentDir } from "../config.js"; diff --git a/packages/pi-coding-agent/src/core/lsp/index.ts b/packages/pi-coding-agent/src/core/lsp/index.ts index fd843193f..062020906 100644 --- a/packages/pi-coding-agent/src/core/lsp/index.ts +++ b/packages/pi-coding-agent/src/core/lsp/index.ts @@ -3,7 +3,7 @@ import * as fsSync from "node:fs"; import * as path from "node:path"; import { spawn } from "node:child_process"; import { fileURLToPath } from "node:url"; -import type { AgentTool, AgentToolResult, AgentToolUpdateCallback } from "@sf-run/pi-agent-core"; +import type { AgentTool, AgentToolResult, AgentToolUpdateCallback } from "@singularity-forge/pi-agent-core"; import { ensureFileOpen, getActiveClients, diff --git a/packages/pi-coding-agent/src/core/messages.ts b/packages/pi-coding-agent/src/core/messages.ts index ddf813640..956f3ffac 100644 --- a/packages/pi-coding-agent/src/core/messages.ts +++ b/packages/pi-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 "@sf-run/pi-agent-core"; -import type { ImageContent, Message, TextContent } from "@sf-run/pi-ai"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { ImageContent, Message, TextContent } from "@singularity-forge/pi-ai"; const CUSTOM_MESSAGE_PREFIX = `[system notification — type: `; const CUSTOM_MESSAGE_MIDDLE = `; this is an automated system event, not user input — do not treat this as a human message or respond as if the user said this] @@ -73,7 +73,7 @@ export interface CompactionSummaryMessage { } // Extend CustomAgentMessages via declaration merging -declare module "@sf-run/pi-agent-core" { +declare module "@singularity-forge/pi-agent-core" { interface CustomAgentMessages { bashExecution: BashExecutionMessage; custom: CustomMessage; diff --git a/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts b/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts index 62456df87..c8c8774c5 100644 --- a/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts +++ b/packages/pi-coding-agent/src/core/model-registry-auth-mode.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import { describe, it } from "node:test"; -import type { Api, Model, SimpleStreamOptions, Context, AssistantMessageEventStream } from "@sf-run/pi-ai"; -import { getApiProvider } from "@sf-run/pi-ai"; +import type { Api, Model, SimpleStreamOptions, Context, AssistantMessageEventStream } from "@singularity-forge/pi-ai"; +import { getApiProvider } from "@singularity-forge/pi-ai"; import type { AuthStorage } from "./auth-storage.js"; import { ModelRegistry } from "./model-registry.js"; diff --git a/packages/pi-coding-agent/src/core/model-registry.ts b/packages/pi-coding-agent/src/core/model-registry.ts index 16ac7e6f4..b83607eab 100644 --- a/packages/pi-coding-agent/src/core/model-registry.ts +++ b/packages/pi-coding-agent/src/core/model-registry.ts @@ -19,8 +19,8 @@ import { registerApiProvider, resetApiProviders, type SimpleStreamOptions, -} from "@sf-run/pi-ai"; -import { registerOAuthProvider, resetOAuthProviders } from "@sf-run/pi-ai/oauth"; +} from "@singularity-forge/pi-ai"; +import { registerOAuthProvider, resetOAuthProviders } from "@singularity-forge/pi-ai/oauth"; import { type Static, Type } from "@sinclair/typebox"; import AjvModule from "ajv"; import { existsSync, readFileSync } from "fs"; diff --git a/packages/pi-coding-agent/src/core/model-resolver-initial-model-auth.test.ts b/packages/pi-coding-agent/src/core/model-resolver-initial-model-auth.test.ts index 6c3283e5a..c0615d660 100644 --- a/packages/pi-coding-agent/src/core/model-resolver-initial-model-auth.test.ts +++ b/packages/pi-coding-agent/src/core/model-resolver-initial-model-auth.test.ts @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import { describe, it } from "node:test"; -import type { Api, Model } from "@sf-run/pi-ai"; +import type { Api, Model } from "@singularity-forge/pi-ai"; import type { ModelRegistry } from "./model-registry.js"; import { findInitialModel } from "./model-resolver.js"; diff --git a/packages/pi-coding-agent/src/core/model-resolver.ts b/packages/pi-coding-agent/src/core/model-resolver.ts index 5e99c6ef5..99236fdf5 100644 --- a/packages/pi-coding-agent/src/core/model-resolver.ts +++ b/packages/pi-coding-agent/src/core/model-resolver.ts @@ -2,8 +2,8 @@ * Model resolution, scoping, and initial selection */ -import type { ThinkingLevel } from "@sf-run/pi-agent-core"; -import { type Api, type Model, modelsAreEqual } from "@sf-run/pi-ai"; +import type { ThinkingLevel } from "@singularity-forge/pi-agent-core"; +import { type Api, type Model, modelsAreEqual } from "@singularity-forge/pi-ai"; import chalk from "chalk"; import { minimatch } from "minimatch"; import { isValidThinkingLevel } from "../cli/args.js"; diff --git a/packages/pi-coding-agent/src/core/retry-handler.test.ts b/packages/pi-coding-agent/src/core/retry-handler.test.ts index bdfa0c2b2..6a9d0c17a 100644 --- a/packages/pi-coding-agent/src/core/retry-handler.test.ts +++ b/packages/pi-coding-agent/src/core/retry-handler.test.ts @@ -9,7 +9,7 @@ import { describe, it, beforeEach, mock, type Mock } from "node:test"; import assert from "node:assert/strict"; import { RetryHandler, type RetryHandlerDeps } from "./retry-handler.js"; -import type { Api, AssistantMessage, Model } from "@sf-run/pi-ai"; +import type { Api, AssistantMessage, Model } from "@singularity-forge/pi-ai"; import type { FallbackResolver } from "./fallback-resolver.js"; import type { ModelRegistry } from "./model-registry.js"; import type { SettingsManager } from "./settings-manager.js"; diff --git a/packages/pi-coding-agent/src/core/retry-handler.ts b/packages/pi-coding-agent/src/core/retry-handler.ts index b9f56141f..af080d96b 100644 --- a/packages/pi-coding-agent/src/core/retry-handler.ts +++ b/packages/pi-coding-agent/src/core/retry-handler.ts @@ -9,9 +9,9 @@ * Context overflow errors are NOT handled here (see compaction). */ -import type { Agent } from "@sf-run/pi-agent-core"; -import type { AssistantMessage, Model } from "@sf-run/pi-ai"; -import { isContextOverflow } from "@sf-run/pi-ai"; +import type { Agent } from "@singularity-forge/pi-agent-core"; +import type { AssistantMessage, Model } from "@singularity-forge/pi-ai"; +import { isContextOverflow } from "@singularity-forge/pi-ai"; import type { UsageLimitErrorType } from "./auth-storage.js"; import type { FallbackResolver } from "./fallback-resolver.js"; import type { ModelRegistry } from "./model-registry.js"; diff --git a/packages/pi-coding-agent/src/core/sdk.ts b/packages/pi-coding-agent/src/core/sdk.ts index 315196c20..90258bcd8 100644 --- a/packages/pi-coding-agent/src/core/sdk.ts +++ b/packages/pi-coding-agent/src/core/sdk.ts @@ -19,8 +19,8 @@ export class CredentialCooldownError extends Error { this.retryAfterMs = retryAfterMs; } } -import { Agent, type AgentMessage, type ThinkingLevel } from "@sf-run/pi-agent-core"; -import type { Message, Model } from "@sf-run/pi-ai"; +import { Agent, type AgentMessage, type ThinkingLevel } from "@singularity-forge/pi-agent-core"; +import type { Message, Model } from "@singularity-forge/pi-ai"; import { getAgentDir, getDocsPath } from "../config.js"; import { AgentSession } from "./agent-session.js"; import { AuthStorage } from "./auth-storage.js"; @@ -177,7 +177,7 @@ function getDefaultAgentDir(): string { * const { session } = await createAgentSession(); * * // With explicit model - * import { getModel } from '@sf-run/pi-ai'; + * import { getModel } from '@singularity-forge/pi-ai'; * const { session } = await createAgentSession({ * model: getModel('anthropic', 'claude-opus-4-5'), * thinkingLevel: 'high', diff --git a/packages/pi-coding-agent/src/core/session-manager.ts b/packages/pi-coding-agent/src/core/session-manager.ts index ff84a2dd1..833667b7b 100644 --- a/packages/pi-coding-agent/src/core/session-manager.ts +++ b/packages/pi-coding-agent/src/core/session-manager.ts @@ -1,5 +1,5 @@ -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { ImageContent, Message, TextContent } from "@sf-run/pi-ai"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { ImageContent, Message, TextContent } from "@singularity-forge/pi-ai"; import { randomUUID } from "crypto"; import { appendFileSync, diff --git a/packages/pi-coding-agent/src/core/settings-manager.ts b/packages/pi-coding-agent/src/core/settings-manager.ts index fb4cad082..d1b131ff9 100644 --- a/packages/pi-coding-agent/src/core/settings-manager.ts +++ b/packages/pi-coding-agent/src/core/settings-manager.ts @@ -1,4 +1,4 @@ -import type { Transport } from "@sf-run/pi-ai"; +import type { Transport } from "@singularity-forge/pi-ai"; import { existsSync, mkdirSync, readFileSync, writeFileSync } from "fs"; import { dirname, join } from "path"; import lockfile from "proper-lockfile"; diff --git a/packages/pi-coding-agent/src/core/skill-tool.test.ts b/packages/pi-coding-agent/src/core/skill-tool.test.ts index 5a995fb96..239fb5063 100644 --- a/packages/pi-coding-agent/src/core/skill-tool.test.ts +++ b/packages/pi-coding-agent/src/core/skill-tool.test.ts @@ -4,7 +4,7 @@ import { tmpdir } from "node:os"; import { join } from "node:path"; import { afterEach, beforeEach, describe, it } from "node:test"; -import { Agent } from "@sf-run/pi-agent-core"; +import { Agent } from "@singularity-forge/pi-agent-core"; import { AuthStorage } from "./auth-storage.js"; import { AgentSession } from "./agent-session.js"; import { ModelRegistry } from "./model-registry.js"; diff --git a/packages/pi-coding-agent/src/core/tools/bash.ts b/packages/pi-coding-agent/src/core/tools/bash.ts index 72831fd59..7dc89c940 100644 --- a/packages/pi-coding-agent/src/core/tools/bash.ts +++ b/packages/pi-coding-agent/src/core/tools/bash.ts @@ -3,7 +3,7 @@ import { createWriteStream, existsSync } from "node:fs"; import { createRequire } from "node:module"; import { tmpdir } from "node:os"; import { join } from "node:path"; -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type Static, Type } from "@sinclair/typebox"; import { spawn } from "child_process"; import { getShellConfig, getShellEnv, killProcessTree, sanitizeCommand } from "../../utils/shell.js"; diff --git a/packages/pi-coding-agent/src/core/tools/edit.ts b/packages/pi-coding-agent/src/core/tools/edit.ts index 7dffcaf17..4bac7b8e9 100644 --- a/packages/pi-coding-agent/src/core/tools/edit.ts +++ b/packages/pi-coding-agent/src/core/tools/edit.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type Static, Type } from "@sinclair/typebox"; import { constants } from "fs"; import { access as fsAccess, readFile as fsReadFile, writeFile as fsWriteFile } from "fs/promises"; diff --git a/packages/pi-coding-agent/src/core/tools/find.ts b/packages/pi-coding-agent/src/core/tools/find.ts index 8a7cf8dba..227e9d85f 100644 --- a/packages/pi-coding-agent/src/core/tools/find.ts +++ b/packages/pi-coding-agent/src/core/tools/find.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@sf-run/pi-agent-core"; -import { glob as nativeGlob } from "@sf-run/native/glob"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; +import { glob as nativeGlob } from "@singularity-forge/native/glob"; import { type Static, Type } from "@sinclair/typebox"; import { existsSync } from "fs"; import path from "path"; diff --git a/packages/pi-coding-agent/src/core/tools/grep.ts b/packages/pi-coding-agent/src/core/tools/grep.ts index 3ed0c1384..da55c6d0d 100644 --- a/packages/pi-coding-agent/src/core/tools/grep.ts +++ b/packages/pi-coding-agent/src/core/tools/grep.ts @@ -1,5 +1,5 @@ import { createInterface } from "node:readline"; -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type Static, Type } from "@sinclair/typebox"; import { spawn } from "child_process"; import { readFileSync, statSync } from "fs"; diff --git a/packages/pi-coding-agent/src/core/tools/hashline-edit.ts b/packages/pi-coding-agent/src/core/tools/hashline-edit.ts index 25839bcb4..db55d653f 100644 --- a/packages/pi-coding-agent/src/core/tools/hashline-edit.ts +++ b/packages/pi-coding-agent/src/core/tools/hashline-edit.ts @@ -4,7 +4,7 @@ * The model references lines by `LINE#ID` tags from read output. * Each tag uniquely identifies a line, so edits remain stable even when lines shift. */ -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type Static, Type } from "@sinclair/typebox"; import { constants } from "fs"; import { access as fsAccess, readFile as fsReadFile, unlink as fsUnlink, writeFile as fsWriteFile } from "fs/promises"; diff --git a/packages/pi-coding-agent/src/core/tools/hashline-read.ts b/packages/pi-coding-agent/src/core/tools/hashline-read.ts index 53c9fb32b..04381b05f 100644 --- a/packages/pi-coding-agent/src/core/tools/hashline-read.ts +++ b/packages/pi-coding-agent/src/core/tools/hashline-read.ts @@ -8,8 +8,8 @@ * * These tags are used by the hashline_edit tool to address lines precisely. */ -import type { AgentTool } from "@sf-run/pi-agent-core"; -import type { ImageContent, TextContent } from "@sf-run/pi-ai"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; +import type { ImageContent, TextContent } from "@singularity-forge/pi-ai"; import { type Static, Type } from "@sinclair/typebox"; import { constants } from "fs"; import { access as fsAccess, readFile as fsReadFile } from "fs/promises"; diff --git a/packages/pi-coding-agent/src/core/tools/hashline.ts b/packages/pi-coding-agent/src/core/tools/hashline.ts index 506320189..6cfc872e3 100644 --- a/packages/pi-coding-agent/src/core/tools/hashline.ts +++ b/packages/pi-coding-agent/src/core/tools/hashline.ts @@ -15,7 +15,7 @@ * Adapted from Oh My Pi's hashline implementation for Node.js (no Bun dependency). */ -import { xxHash32 } from "@sf-run/native/xxhash"; +import { xxHash32 } from "@singularity-forge/native/xxhash"; // ═══════════════════════════════════════════════════════════════════════════ // Hash Computation diff --git a/packages/pi-coding-agent/src/core/tools/index.ts b/packages/pi-coding-agent/src/core/tools/index.ts index 1f0a187c3..14b1cf388 100644 --- a/packages/pi-coding-agent/src/core/tools/index.ts +++ b/packages/pi-coding-agent/src/core/tools/index.ts @@ -120,7 +120,7 @@ export { resetToolCompatibilityRegistry, } from "./tool-compatibility-registry.js"; -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type BashToolOptions, bashTool, createBashTool } from "./bash.js"; import { createEditTool, editTool } from "./edit.js"; import { createFindTool, findTool } from "./find.js"; diff --git a/packages/pi-coding-agent/src/core/tools/ls.ts b/packages/pi-coding-agent/src/core/tools/ls.ts index ce1855471..bff9a7cbf 100644 --- a/packages/pi-coding-agent/src/core/tools/ls.ts +++ b/packages/pi-coding-agent/src/core/tools/ls.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type Static, Type } from "@sinclair/typebox"; import { existsSync, readdirSync, statSync } from "fs"; import nodePath from "path"; diff --git a/packages/pi-coding-agent/src/core/tools/read.ts b/packages/pi-coding-agent/src/core/tools/read.ts index c0cf311b9..2f6907dba 100644 --- a/packages/pi-coding-agent/src/core/tools/read.ts +++ b/packages/pi-coding-agent/src/core/tools/read.ts @@ -1,5 +1,5 @@ -import type { AgentTool } from "@sf-run/pi-agent-core"; -import type { ImageContent, TextContent } from "@sf-run/pi-ai"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; +import type { ImageContent, TextContent } from "@singularity-forge/pi-ai"; import { type Static, Type } from "@sinclair/typebox"; import { constants } from "fs"; import { access as fsAccess, readFile as fsReadFile } from "fs/promises"; diff --git a/packages/pi-coding-agent/src/core/tools/write.ts b/packages/pi-coding-agent/src/core/tools/write.ts index 8f242979d..57edabb38 100644 --- a/packages/pi-coding-agent/src/core/tools/write.ts +++ b/packages/pi-coding-agent/src/core/tools/write.ts @@ -1,4 +1,4 @@ -import type { AgentTool } from "@sf-run/pi-agent-core"; +import type { AgentTool } from "@singularity-forge/pi-agent-core"; import { type Static, Type } from "@sinclair/typebox"; import { mkdir as fsMkdir, writeFile as fsWriteFile } from "fs/promises"; import { dirname } from "path"; diff --git a/packages/pi-coding-agent/src/main.ts b/packages/pi-coding-agent/src/main.ts index c683031a5..741261e83 100644 --- a/packages/pi-coding-agent/src/main.ts +++ b/packages/pi-coding-agent/src/main.ts @@ -5,7 +5,7 @@ * createAgentSession() options. The SDK does the heavy lifting. */ -import { type ImageContent, modelsAreEqual, supportsXhigh } from "@sf-run/pi-ai"; +import { type ImageContent, modelsAreEqual, supportsXhigh } from "@singularity-forge/pi-ai"; import chalk from "chalk"; import { createInterface } from "readline"; import { type Args, type ExtensionFlagParseOptions, parseArgs, printHelp } from "./cli/args.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/armin.ts b/packages/pi-coding-agent/src/modes/interactive/components/armin.ts index dca7b1851..2bc5f9ca2 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/armin.ts +++ b/packages/pi-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, type TUI, visibleWidth } from "@sf-run/pi-tui"; +import { type Component, type TUI, visibleWidth } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; // XBM image: 31x36 pixels, LSB first, 1=background, 0=foreground diff --git a/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts b/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts index 9de268928..ef43e395b 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/assistant-message.ts @@ -1,5 +1,5 @@ -import type { AssistantMessage } from "@sf-run/pi-ai"; -import { Container, Markdown, type MarkdownTheme, Spacer, Text } from "@sf-run/pi-tui"; +import type { AssistantMessage } from "@singularity-forge/pi-ai"; +import { Container, Markdown, type MarkdownTheme, Spacer, Text } from "@singularity-forge/pi-tui"; import { getMarkdownTheme, theme } from "../theme/theme.js"; import { formatTimestamp, type TimestampFormat } from "./timestamp.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts b/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts index 69f746ad3..f09f4af5c 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/bash-execution.ts @@ -2,7 +2,7 @@ * Component for displaying bash command execution with streaming output. */ -import { Container, Loader, Spacer, Text, type TUI } from "@sf-run/pi-tui"; +import { Container, Loader, Spacer, Text, type TUI } from "@singularity-forge/pi-tui"; import stripAnsi from "strip-ansi"; import { DEFAULT_MAX_BYTES, diff --git a/packages/pi-coding-agent/src/modes/interactive/components/bordered-loader.ts b/packages/pi-coding-agent/src/modes/interactive/components/bordered-loader.ts index 004f9d713..bb2176479 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/bordered-loader.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/bordered-loader.ts @@ -1,4 +1,4 @@ -import { CancellableLoader, Container, Loader, Spacer, Text, type TUI } from "@sf-run/pi-tui"; +import { CancellableLoader, Container, Loader, Spacer, Text, type TUI } from "@singularity-forge/pi-tui"; import type { Theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; import { keyHint } from "./keybinding-hints.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/branch-summary-message.ts b/packages/pi-coding-agent/src/modes/interactive/components/branch-summary-message.ts index cab49db4d..f80c8d5f5 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/branch-summary-message.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/branch-summary-message.ts @@ -1,4 +1,4 @@ -import { Box, Markdown, type MarkdownTheme, Spacer, Text } from "@sf-run/pi-tui"; +import { Box, Markdown, type MarkdownTheme, Spacer, Text } from "@singularity-forge/pi-tui"; import type { BranchSummaryMessage } from "../../../core/messages.js"; import { getMarkdownTheme, theme } from "../theme/theme.js"; import { editorKey } from "./keybinding-hints.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/compaction-summary-message.ts b/packages/pi-coding-agent/src/modes/interactive/components/compaction-summary-message.ts index 8d481960d..d438838bc 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/compaction-summary-message.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/compaction-summary-message.ts @@ -1,4 +1,4 @@ -import { Box, Markdown, type MarkdownTheme, Spacer, Text } from "@sf-run/pi-tui"; +import { Box, Markdown, type MarkdownTheme, Spacer, Text } from "@singularity-forge/pi-tui"; import type { CompactionSummaryMessage } from "../../../core/messages.js"; import { getMarkdownTheme, theme } from "../theme/theme.js"; import { editorKey } from "./keybinding-hints.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/config-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/config-selector.ts index 369482a9e..30334202d 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/config-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/config-selector.ts @@ -13,7 +13,7 @@ import { Spacer, truncateToWidth, visibleWidth, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { CONFIG_DIR_NAME } from "../../../config.js"; import type { PathMetadata, ResolvedPaths, ResolvedResource } from "../../../core/package-manager.js"; import type { PackageSource, SettingsManager } from "../../../core/settings-manager.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/countdown-timer.ts b/packages/pi-coding-agent/src/modes/interactive/components/countdown-timer.ts index ee51c8141..49f407006 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/countdown-timer.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/countdown-timer.ts @@ -2,7 +2,7 @@ * Reusable countdown timer for dialog components. */ -import type { TUI } from "@sf-run/pi-tui"; +import type { TUI } from "@singularity-forge/pi-tui"; export class CountdownTimer { private intervalId: ReturnType | undefined; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/custom-editor.ts b/packages/pi-coding-agent/src/modes/interactive/components/custom-editor.ts index 070202c9c..43e01c712 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/custom-editor.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/custom-editor.ts @@ -1,4 +1,4 @@ -import { Editor, type EditorOptions, type EditorTheme, type TUI, isKittyProtocolActive } from "@sf-run/pi-tui"; +import { Editor, type EditorOptions, type EditorTheme, type TUI, isKittyProtocolActive } from "@singularity-forge/pi-tui"; import type { AppAction, KeybindingsManager } from "../../../core/keybindings.js"; /** diff --git a/packages/pi-coding-agent/src/modes/interactive/components/custom-message.ts b/packages/pi-coding-agent/src/modes/interactive/components/custom-message.ts index b03a28057..fbc39af5d 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/custom-message.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/custom-message.ts @@ -1,6 +1,6 @@ -import type { TextContent } from "@sf-run/pi-ai"; -import type { Component } from "@sf-run/pi-tui"; -import { Box, Container, Markdown, type MarkdownTheme, Spacer, Text } from "@sf-run/pi-tui"; +import type { TextContent } from "@singularity-forge/pi-ai"; +import type { Component } from "@singularity-forge/pi-tui"; +import { Box, Container, Markdown, type MarkdownTheme, Spacer, Text } from "@singularity-forge/pi-tui"; import type { MessageRenderer } from "../../../core/extensions/types.js"; import type { CustomMessage } from "../../../core/messages.js"; import { getMarkdownTheme, theme } from "../theme/theme.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/daxnuts.ts b/packages/pi-coding-agent/src/modes/interactive/components/daxnuts.ts index 7c2a8962a..e1de082a6 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/daxnuts.ts +++ b/packages/pi-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, type TUI, visibleWidth } from "@sf-run/pi-tui"; +import { type Component, type TUI, visibleWidth } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; // 32x32 RGB image of dax, hex encoded (3 bytes per pixel) diff --git a/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts b/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts index 852fb793f..854d143d0 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/dynamic-border.ts @@ -1,5 +1,5 @@ -import type { Component, TUI } from "@sf-run/pi-tui"; -import { visibleWidth } from "@sf-run/pi-tui"; +import type { Component, TUI } from "@singularity-forge/pi-tui"; +import { visibleWidth } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; /** diff --git a/packages/pi-coding-agent/src/modes/interactive/components/extension-editor.ts b/packages/pi-coding-agent/src/modes/interactive/components/extension-editor.ts index db23a2288..5a2096909 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/extension-editor.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/extension-editor.ts @@ -16,7 +16,7 @@ import { Spacer, Text, type TUI, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import type { KeybindingsManager } from "../../../core/keybindings.js"; import { getEditorTheme, theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/extension-input.ts b/packages/pi-coding-agent/src/modes/interactive/components/extension-input.ts index 3bc27f11c..6537af4d8 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/extension-input.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/extension-input.ts @@ -2,7 +2,7 @@ * Simple text input component for extensions. */ -import { Container, type Focusable, getEditorKeybindings, Input, Spacer, Text, type TUI } from "@sf-run/pi-tui"; +import { Container, type Focusable, getEditorKeybindings, Input, Spacer, Text, type TUI } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; import { CountdownTimer } from "./countdown-timer.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts index 0ce5b73a0..326e38af2 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/extension-selector.ts @@ -4,7 +4,7 @@ * Options starting with SEPARATOR_PREFIX are rendered as non-selectable group headers. */ -import { Container, getEditorKeybindings, Spacer, Text, type TUI } from "@sf-run/pi-tui"; +import { Container, getEditorKeybindings, Spacer, Text, type TUI } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; import { CountdownTimer } from "./countdown-timer.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/footer.ts b/packages/pi-coding-agent/src/modes/interactive/components/footer.ts index 77d334219..008ac40f3 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/footer.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/footer.ts @@ -1,4 +1,4 @@ -import { type Component, truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import { type Component, truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; import type { AgentSession } from "../../../core/agent-session.js"; import type { ReadonlyFooterDataProvider } from "../../../core/footer-data-provider.js"; import { theme } from "../theme/theme.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/keybinding-hints.ts b/packages/pi-coding-agent/src/modes/interactive/components/keybinding-hints.ts index c500593d7..e6612c093 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/keybinding-hints.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/keybinding-hints.ts @@ -2,7 +2,7 @@ * Utilities for formatting keybinding hints in the UI. */ -import { type EditorAction, getEditorKeybindings, type KeyId } from "@sf-run/pi-tui"; +import { type EditorAction, getEditorKeybindings, type KeyId } from "@singularity-forge/pi-tui"; import type { AppAction, KeybindingsManager } from "../../../core/keybindings.js"; import { theme } from "../theme/theme.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts b/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts index 58287febc..ca5f83054 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/login-dialog.ts @@ -1,7 +1,7 @@ // SF Login Dialog Component — OAuth login flow UI // Copyright (c) 2026 Jeremy McSpadden -import { getOAuthProviders } from "@sf-run/pi-ai/oauth"; -import { Container, type Focusable, getEditorKeybindings, Input, Spacer, Text, truncateToWidth, type TUI } from "@sf-run/pi-tui"; +import { getOAuthProviders } from "@singularity-forge/pi-ai/oauth"; +import { Container, type Focusable, getEditorKeybindings, Input, Spacer, Text, truncateToWidth, type TUI } from "@singularity-forge/pi-tui"; import { execFile } from "child_process"; import { theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts index 474328338..7f52b9f55 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/model-selector.ts @@ -1,4 +1,4 @@ -import { type Model, modelsAreEqual } from "@sf-run/pi-ai"; +import { type Model, modelsAreEqual } from "@singularity-forge/pi-ai"; import { Container, type Focusable, @@ -8,7 +8,7 @@ import { Spacer, Text, type TUI, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import type { ModelRegistry } from "../../../core/model-registry.js"; import type { SettingsManager } from "../../../core/settings-manager.js"; import { theme } from "../theme/theme.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/oauth-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/oauth-selector.ts index 4464ef52b..4aaa13867 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/oauth-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/oauth-selector.ts @@ -1,6 +1,6 @@ -import type { OAuthProviderInterface } from "@sf-run/pi-ai"; -import { getOAuthProviders } from "@sf-run/pi-ai/oauth"; -import { Container, getEditorKeybindings, Spacer, TruncatedText } from "@sf-run/pi-tui"; +import type { OAuthProviderInterface } from "@singularity-forge/pi-ai"; +import { getOAuthProviders } from "@singularity-forge/pi-ai/oauth"; +import { Container, getEditorKeybindings, Spacer, TruncatedText } from "@singularity-forge/pi-tui"; import type { AuthStorage } from "../../../core/auth-storage.js"; import { theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts b/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts index da66e70c2..2659a9937 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/provider-manager.ts @@ -10,7 +10,7 @@ import { Spacer, Text, type TUI, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import type { AuthStorage } from "../../../core/auth-storage.js"; import { getDiscoverableProviders } from "../../../core/model-discovery.js"; import { providerDisplayName } from "./model-selector.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/scoped-models-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/scoped-models-selector.ts index 2bdfae90d..315cbcdb2 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/scoped-models-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/scoped-models-selector.ts @@ -1,4 +1,4 @@ -import type { Model } from "@sf-run/pi-ai"; +import type { Model } from "@singularity-forge/pi-ai"; import { providerDisplayName } from "./model-selector.js"; import { Container, @@ -10,7 +10,7 @@ import { matchesKey, Spacer, Text, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts b/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts index f0d8a577a..105c7269d 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/session-selector-search.ts @@ -1,4 +1,4 @@ -import { fuzzyMatch } from "@sf-run/pi-tui"; +import { fuzzyMatch } from "@singularity-forge/pi-tui"; import type { SessionInfo } from "../../../core/session-manager.js"; export type SortMode = "threaded" | "recent" | "relevance"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts index 5c0fd8a68..a23112b6a 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/session-selector.ts @@ -12,7 +12,7 @@ import { Text, truncateToWidth, visibleWidth, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { KeybindingsManager } from "../../../core/keybindings.js"; import type { SessionInfo, SessionListProgress } from "../../../core/session-manager.js"; import { theme } from "../theme/theme.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts index bce587ca9..2b816435b 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/settings-selector.ts @@ -1,5 +1,5 @@ -import type { ThinkingLevel } from "@sf-run/pi-agent-core"; -import type { Transport } from "@sf-run/pi-ai"; +import type { ThinkingLevel } from "@singularity-forge/pi-agent-core"; +import type { Transport } from "@singularity-forge/pi-ai"; import { Container, getCapabilities, @@ -9,7 +9,7 @@ import { SettingsList, Spacer, Text, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { getSelectListTheme, getSettingsListTheme, theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/show-images-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/show-images-selector.ts index 3c8825e2d..087a4e197 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/show-images-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/show-images-selector.ts @@ -1,4 +1,4 @@ -import { Container, type SelectItem, SelectList } from "@sf-run/pi-tui"; +import { Container, type SelectItem, SelectList } from "@singularity-forge/pi-tui"; import { getSelectListTheme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts b/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts index 60b1104fa..7699d8566 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/skill-invocation-message.ts @@ -1,4 +1,4 @@ -import { Box, Markdown, type MarkdownTheme, Text } from "@sf-run/pi-tui"; +import { Box, Markdown, type MarkdownTheme, Text } from "@singularity-forge/pi-tui"; import type { ParsedSkillBlock } from "../../../core/agent-session.js"; import { getMarkdownTheme, theme } from "../theme/theme.js"; import { editorKey } from "./keybinding-hints.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/theme-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/theme-selector.ts index 48ed4d58e..b1bf427d2 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/theme-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/theme-selector.ts @@ -1,4 +1,4 @@ -import { Container, type SelectItem, SelectList } from "@sf-run/pi-tui"; +import { Container, type SelectItem, SelectList } from "@singularity-forge/pi-tui"; import { getAvailableThemes, getSelectListTheme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/thinking-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/thinking-selector.ts index 21bf228df..ecab98ac5 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/thinking-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/thinking-selector.ts @@ -1,5 +1,5 @@ -import type { ThinkingLevel } from "@sf-run/pi-agent-core"; -import { Container, type SelectItem, SelectList } from "@sf-run/pi-tui"; +import type { ThinkingLevel } from "@singularity-forge/pi-agent-core"; +import { Container, type SelectItem, SelectList } from "@singularity-forge/pi-tui"; import { getSelectListTheme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts b/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts index 95a3c6bf1..058d49335 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/tool-execution.ts @@ -9,7 +9,7 @@ import { Text, type TUI, truncateToWidth, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import stripAnsi from "strip-ansi"; import type { ToolDefinition } from "../../../core/extensions/types.js"; import { computeEditDiff, type EditDiffError, type EditDiffResult } from "../../../core/tools/edit-diff.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts b/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts index 125f78d94..8a76eb138 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/tree-render-utils.ts @@ -1,4 +1,4 @@ -import { truncateToWidth } from "@sf-run/pi-tui"; +import { truncateToWidth } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; // ── Tree connector characters ──────────────────────────────────────── diff --git a/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts index a0406313e..e446c59a4 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/tree-selector.ts @@ -9,7 +9,7 @@ import { Text, TruncatedText, truncateToWidth, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import type { SessionTreeNode } from "../../../core/session-manager.js"; import { theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/user-message-selector.ts b/packages/pi-coding-agent/src/modes/interactive/components/user-message-selector.ts index fe52f1f73..49be12920 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/user-message-selector.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/user-message-selector.ts @@ -1,4 +1,4 @@ -import { type Component, Container, getEditorKeybindings, Spacer, Text, truncateToWidth } from "@sf-run/pi-tui"; +import { type Component, Container, getEditorKeybindings, Spacer, Text, truncateToWidth } from "@singularity-forge/pi-tui"; import { theme } from "../theme/theme.js"; import { DynamicBorder } from "./dynamic-border.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts b/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts index e429c9505..f935b11d0 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts +++ b/packages/pi-coding-agent/src/modes/interactive/components/user-message.ts @@ -1,4 +1,4 @@ -import { Container, Markdown, type MarkdownTheme, Spacer, Text } from "@sf-run/pi-tui"; +import { Container, Markdown, type MarkdownTheme, Spacer, Text } from "@singularity-forge/pi-tui"; import { getMarkdownTheme, theme } from "../theme/theme.js"; import { formatTimestamp, type TimestampFormat } from "./timestamp.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/components/visual-truncate.ts b/packages/pi-coding-agent/src/modes/interactive/components/visual-truncate.ts index f584b9cb4..8989c1ee9 100644 --- a/packages/pi-coding-agent/src/modes/interactive/components/visual-truncate.ts +++ b/packages/pi-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 "@sf-run/pi-tui"; +import { Text } from "@singularity-forge/pi-tui"; export interface VisualTruncateResult { /** The visual lines to display */ diff --git a/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts b/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts index d65e7ae17..df23ee8fe 100644 --- a/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts +++ b/packages/pi-coding-agent/src/modes/interactive/controllers/chat-controller.ts @@ -1,4 +1,4 @@ -import { Loader, Markdown, Spacer, Text } from "@sf-run/pi-tui"; +import { Loader, Markdown, Spacer, Text } from "@singularity-forge/pi-tui"; import type { InteractiveModeEvent, InteractiveModeStateHost } from "../interactive-mode-state.js"; import { theme } from "../theme/theme.js"; diff --git a/packages/pi-coding-agent/src/modes/interactive/controllers/model-controller.ts b/packages/pi-coding-agent/src/modes/interactive/controllers/model-controller.ts index 2be851eb3..5a161c959 100644 --- a/packages/pi-coding-agent/src/modes/interactive/controllers/model-controller.ts +++ b/packages/pi-coding-agent/src/modes/interactive/controllers/model-controller.ts @@ -1,4 +1,4 @@ -import type { Model } from "@sf-run/pi-ai"; +import type { Model } from "@singularity-forge/pi-ai"; export async function handleModelCommand(host: any, searchTerm?: string): Promise { if (!searchTerm) { diff --git a/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts b/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts index c9cbed9f5..5e3506714 100644 --- a/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts +++ b/packages/pi-coding-agent/src/modes/interactive/interactive-mode.ts @@ -7,9 +7,9 @@ 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 { listDescendants } from "@sf-run/native"; -import type { AgentMessage } from "@sf-run/pi-agent-core"; -import type { AssistantMessage, ImageContent, Message, Model, OAuthProviderId } from "@sf-run/pi-ai"; +import { listDescendants } from "@singularity-forge/native"; +import type { AgentMessage } from "@singularity-forge/pi-agent-core"; +import type { AssistantMessage, ImageContent, Message, Model, OAuthProviderId } from "@singularity-forge/pi-ai"; import type { AutocompleteItem, EditorComponent, @@ -19,7 +19,7 @@ import type { OverlayHandle, OverlayOptions, SlashCommand, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { CombinedAutocompleteProvider, type Component, @@ -35,7 +35,7 @@ import { TruncatedText, TUI, visibleWidth, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { spawn, spawnSync } from "child_process"; import { APP_NAME, @@ -625,7 +625,7 @@ export class InteractiveMode { if (process.env.PI_SKIP_VERSION_CHECK || process.env.PI_OFFLINE) return undefined; try { - const response = await fetch("https://registry.npmjs.org/@sf-run/pi-coding-agent/latest", { + const response = await fetch("https://registry.npmjs.org/@singularity-forge/pi-coding-agent/latest", { signal: AbortSignal.timeout(10000), }); if (!response.ok) return undefined; @@ -2681,7 +2681,7 @@ export class InteractiveMode { } showNewVersionNotification(newVersion: string): void { - const action = theme.fg("accent", getUpdateInstruction("@sf-run/pi-coding-agent")); + const action = theme.fg("accent", getUpdateInstruction("@singularity-forge/pi-coding-agent")); const updateInstruction = theme.fg("muted", `New version ${newVersion} is available. `) + action; const changelogUrl = theme.fg( "accent", diff --git a/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts b/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts index 5ada97591..7e943e7f3 100644 --- a/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts +++ b/packages/pi-coding-agent/src/modes/interactive/slash-command-handlers.ts @@ -11,19 +11,19 @@ import * as fs from "node:fs"; import * as os from "node:os"; import * as path from "node:path"; -import type { ThinkingLevel } from "@sf-run/pi-agent-core"; +import type { ThinkingLevel } from "@singularity-forge/pi-agent-core"; import type { EditorAction, EditorComponent, MarkdownTheme, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { type Component, Container, Markdown, Spacer, Text, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { spawn, spawnSync } from "child_process"; import { getShareViewerUrl, @@ -41,7 +41,7 @@ import { appKey, editorKey, formatKeyForDisplay } from "./components/keybinding- import { SelectSubmenu, THINKING_DESCRIPTIONS } from "./components/settings-selector.js"; import { theme } from "./theme/theme.js"; -import type { TUI } from "@sf-run/pi-tui"; +import type { TUI } from "@singularity-forge/pi-tui"; // --------------------------------------------------------------------------- // Context interface — the subset of InteractiveMode needed by slash commands diff --git a/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts b/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts index 1df4c2380..76edfb7e7 100644 --- a/packages/pi-coding-agent/src/modes/interactive/theme/theme.ts +++ b/packages/pi-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 { EditorTheme, MarkdownTheme, SelectListTheme } from "@sf-run/pi-tui"; +import type { EditorTheme, MarkdownTheme, SelectListTheme } from "@singularity-forge/pi-tui"; import { type Static, Type } from "@sinclair/typebox"; import { TypeCompiler } from "@sinclair/typebox/compiler"; import chalk from "chalk"; @@ -8,7 +8,7 @@ import { highlightCode as nativeHighlightCode, supportsLanguage, type HighlightColors, -} from "@sf-run/native"; +} from "@singularity-forge/native"; import { getCustomThemesDir } from "../../../config.js"; import { builtinThemes } from "./themes.js"; @@ -645,7 +645,7 @@ function getDefaultTheme(): string { // ============================================================================ // Use globalThis to share theme across module loaders (tsx + jiti in dev mode) -const THEME_KEY = Symbol.for("@sf-run/pi-coding-agent:theme"); +const THEME_KEY = Symbol.for("@singularity-forge/pi-coding-agent:theme"); // Export theme as a getter that reads from globalThis // This ensures all module instances (tsx, jiti) see the same theme @@ -1065,7 +1065,7 @@ export function getEditorTheme(): EditorTheme { }; } -export function getSettingsListTheme(): import("@sf-run/pi-tui").SettingsListTheme { +export function getSettingsListTheme(): import("@singularity-forge/pi-tui").SettingsListTheme { return { label: (text: string, selected: boolean) => (selected ? theme.fg("accent", text) : text), value: (text: string, selected: boolean) => (selected ? theme.fg("accent", text) : theme.fg("muted", text)), diff --git a/packages/pi-coding-agent/src/modes/print-mode.ts b/packages/pi-coding-agent/src/modes/print-mode.ts index edcf8cc61..60a2937e4 100644 --- a/packages/pi-coding-agent/src/modes/print-mode.ts +++ b/packages/pi-coding-agent/src/modes/print-mode.ts @@ -6,7 +6,7 @@ * - `pi --mode json "prompt"` - JSON event stream */ -import type { AssistantMessage, ImageContent } from "@sf-run/pi-ai"; +import type { AssistantMessage, ImageContent } from "@singularity-forge/pi-ai"; import type { AgentSession } from "../core/agent-session.js"; import { createDefaultCommandContextActions } from "./shared/command-context-actions.js"; diff --git a/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts b/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts index 536af4a22..2458f52bb 100644 --- a/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts +++ b/packages/pi-coding-agent/src/modes/rpc/remote-terminal.ts @@ -1,4 +1,4 @@ -import type { Terminal } from "@sf-run/pi-tui"; +import type { Terminal } from "@singularity-forge/pi-tui"; export interface RemoteTerminalOptions { onWrite: (data: string) => void; diff --git a/packages/pi-coding-agent/src/modes/rpc/rpc-client.ts b/packages/pi-coding-agent/src/modes/rpc/rpc-client.ts index 826ded1d3..9e6fccc37 100644 --- a/packages/pi-coding-agent/src/modes/rpc/rpc-client.ts +++ b/packages/pi-coding-agent/src/modes/rpc/rpc-client.ts @@ -7,8 +7,8 @@ import { type ChildProcess, spawn } from "node:child_process"; import { existsSync } from "node:fs"; import { dirname, join, resolve } from "node:path"; -import type { AgentEvent, AgentMessage, ThinkingLevel } from "@sf-run/pi-agent-core"; -import type { ImageContent } from "@sf-run/pi-ai"; +import type { AgentEvent, AgentMessage, ThinkingLevel } from "@singularity-forge/pi-agent-core"; +import type { ImageContent } from "@singularity-forge/pi-ai"; import type { SessionStats } from "../../core/agent-session.js"; import type { BashResult } from "../../core/bash-executor.js"; import type { CompactionResult } from "../../core/compaction/index.js"; diff --git a/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts b/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts index ede57fa9d..918b78c78 100644 --- a/packages/pi-coding-agent/src/modes/rpc/rpc-types.ts +++ b/packages/pi-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 "@sf-run/pi-agent-core"; -import type { ImageContent, Model } from "@sf-run/pi-ai"; +import type { AgentMessage, ThinkingLevel } from "@singularity-forge/pi-agent-core"; +import type { ImageContent, Model } from "@singularity-forge/pi-ai"; import type { SessionStats } from "../../core/agent-session.js"; import type { BashResult } from "../../core/bash-executor.js"; import type { CompactionResult } from "../../core/compaction/index.js"; diff --git a/packages/pi-coding-agent/src/resources/extensions/memory/index.ts b/packages/pi-coding-agent/src/resources/extensions/memory/index.ts index dae74aa0e..aec35f5cd 100644 --- a/packages/pi-coding-agent/src/resources/extensions/memory/index.ts +++ b/packages/pi-coding-agent/src/resources/extensions/memory/index.ts @@ -11,9 +11,9 @@ * - /memory command: view, clear, rebuild, stats */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { getAgentDir, SettingsManager } from "@sf-run/pi-coding-agent"; -import { completeSimple } from "@sf-run/pi-ai"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { getAgentDir, SettingsManager } from "@singularity-forge/pi-coding-agent"; +import { completeSimple } from "@singularity-forge/pi-ai"; import { createHash } from "crypto"; import { existsSync, mkdirSync, rmSync } from "fs"; import { join } from "path"; diff --git a/packages/pi-coding-agent/src/utils/clipboard-image.ts b/packages/pi-coding-agent/src/utils/clipboard-image.ts index 4882b35c6..673c94988 100644 --- a/packages/pi-coding-agent/src/utils/clipboard-image.ts +++ b/packages/pi-coding-agent/src/utils/clipboard-image.ts @@ -1,7 +1,7 @@ import { spawnSync } from "child_process"; -import { readImageFromClipboard as nativeReadImage } from "@sf-run/native/clipboard"; -import { ImageFormat, parseImage } from "@sf-run/native/image"; +import { readImageFromClipboard as nativeReadImage } from "@singularity-forge/native/clipboard"; +import { ImageFormat, parseImage } from "@singularity-forge/native/image"; export type ClipboardImage = { bytes: Uint8Array; diff --git a/packages/pi-coding-agent/src/utils/clipboard-native.ts b/packages/pi-coding-agent/src/utils/clipboard-native.ts index 5769c6b64..64b7e9ca1 100644 --- a/packages/pi-coding-agent/src/utils/clipboard-native.ts +++ b/packages/pi-coding-agent/src/utils/clipboard-native.ts @@ -1,11 +1,11 @@ /** - * Re-export native clipboard utilities from "@sf-run/native. + * Re-export native clipboard utilities from "@singularity-forge/native. * * This module exists for backward compatibility. Prefer importing - * directly from "@sf-run/native/clipboard" in new code. + * directly from "@singularity-forge/native/clipboard" in new code. */ export { copyToClipboard, readTextFromClipboard, readImageFromClipboard, -} from "@sf-run/native/clipboard"; +} from "@singularity-forge/native/clipboard"; diff --git a/packages/pi-coding-agent/src/utils/clipboard.ts b/packages/pi-coding-agent/src/utils/clipboard.ts index a161212d1..d850da2b4 100644 --- a/packages/pi-coding-agent/src/utils/clipboard.ts +++ b/packages/pi-coding-agent/src/utils/clipboard.ts @@ -1,4 +1,4 @@ -import { copyToClipboard as nativeCopy } from "@sf-run/native/clipboard"; +import { copyToClipboard as nativeCopy } from "@singularity-forge/native/clipboard"; export function copyToClipboard(text: string): void { // Always emit OSC 52 - works over SSH/mosh, harmless locally diff --git a/packages/pi-coding-agent/src/utils/image-convert.ts b/packages/pi-coding-agent/src/utils/image-convert.ts index 30c791708..5ae091d3e 100644 --- a/packages/pi-coding-agent/src/utils/image-convert.ts +++ b/packages/pi-coding-agent/src/utils/image-convert.ts @@ -1,4 +1,4 @@ -import { ImageFormat, parseImage } from "@sf-run/native/image"; +import { ImageFormat, parseImage } from "@singularity-forge/native/image"; /** * Convert image to PNG format for terminal display. diff --git a/packages/pi-coding-agent/src/utils/image-resize.ts b/packages/pi-coding-agent/src/utils/image-resize.ts index f3afa368d..95f3969f1 100644 --- a/packages/pi-coding-agent/src/utils/image-resize.ts +++ b/packages/pi-coding-agent/src/utils/image-resize.ts @@ -1,6 +1,6 @@ -import type { ImageContent } from "@sf-run/pi-ai"; -import { ImageFormat, parseImage, SamplingFilter } from "@sf-run/native/image"; -import type { NativeImageHandle } from "@sf-run/native/image"; +import type { ImageContent } from "@singularity-forge/pi-ai"; +import { ImageFormat, parseImage, SamplingFilter } from "@singularity-forge/native/image"; +import type { NativeImageHandle } from "@singularity-forge/native/image"; export interface ImageResizeOptions { maxWidth?: number; // Default: 2000 diff --git a/packages/pi-coding-agent/src/utils/proxy-server.ts b/packages/pi-coding-agent/src/utils/proxy-server.ts index ca4957a71..449d4eef4 100644 --- a/packages/pi-coding-agent/src/utils/proxy-server.ts +++ b/packages/pi-coding-agent/src/utils/proxy-server.ts @@ -7,7 +7,7 @@ import { type Message, type Model, type StreamOptions, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import { AuthStorage } from "../core/auth-storage.js"; import { ModelRegistry } from "../core/model-registry.js"; diff --git a/packages/pi-tui/package.json b/packages/pi-tui/package.json index f124aa046..65614f806 100644 --- a/packages/pi-tui/package.json +++ b/packages/pi-tui/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/pi-tui", + "name": "@singularity-forge/pi-tui", "version": "2.74.0", "description": "Terminal User Interface library (vendored from pi-mono)", "type": "module", diff --git a/packages/pi-tui/src/autocomplete.ts b/packages/pi-tui/src/autocomplete.ts index 50e44eb9a..026f984c9 100644 --- a/packages/pi-tui/src/autocomplete.ts +++ b/packages/pi-tui/src/autocomplete.ts @@ -1,7 +1,7 @@ import { readdirSync, statSync } from "fs"; import { homedir } from "os"; import { basename, dirname, join } from "path"; -import { fuzzyFind } from "@sf-run/native/fd"; +import { fuzzyFind } from "@singularity-forge/native/fd"; import { fuzzyFilter } from "./fuzzy.js"; const PATH_DELIMITERS = new Set([" ", "\t", '"', "'", "="]); diff --git a/packages/pi-tui/src/terminal-image.ts b/packages/pi-tui/src/terminal-image.ts index 8446a06cb..3340e2cac 100644 --- a/packages/pi-tui/src/terminal-image.ts +++ b/packages/pi-tui/src/terminal-image.ts @@ -209,7 +209,7 @@ export function calculateImageRows( * Auto-detects format from byte content (PNG, JPEG, GIF, WebP). */ export async function getImageDimensions(base64Data: string): Promise { - const { parseImage: parse } = await import("@sf-run/native/image"); + const { parseImage: parse } = await import("@singularity-forge/native/image"); try { const bytes = new Uint8Array(Buffer.from(base64Data, "base64")); const handle = await parse(bytes); diff --git a/packages/pi-tui/src/utils.ts b/packages/pi-tui/src/utils.ts index 1a8f70f13..56c735018 100644 --- a/packages/pi-tui/src/utils.ts +++ b/packages/pi-tui/src/utils.ts @@ -5,7 +5,7 @@ import { sliceWithWidth as nativeSliceWithWidth, extractSegments as nativeExtractSegments, EllipsisKind, -} from "@sf-run/native/text"; +} from "@singularity-forge/native/text"; // Grapheme segmenter (shared instance) const segmenter = new Intl.Segmenter(undefined, { granularity: "grapheme" }); diff --git a/scripts/bump-version.mjs b/scripts/bump-version.mjs index f8a9b9d1e..f4c88337d 100644 --- a/scripts/bump-version.mjs +++ b/scripts/bump-version.mjs @@ -45,11 +45,11 @@ for (const name of workspacePackages) { const ws = JSON.parse(readFileSync(wsPath, "utf-8")); const wsOld = ws.version; ws.version = newVersion; - // Bump any internal @singularity-forge/* or @sf-run/* dep references to match. + // Bump any internal @singularity-forge/* or @singularity-forge/* dep references to match. for (const field of ["dependencies", "devDependencies", "peerDependencies"]) { if (!ws[field]) continue; for (const dep of Object.keys(ws[field])) { - if (workspacePackages.some((n) => dep === `@singularity-forge/${n}` || dep === `@sf-run/${n}`)) { + if (workspacePackages.some((n) => dep === `@singularity-forge/${n}` || dep === `@singularity-forge/${n}`)) { ws[field][dep] = `^${newVersion}`; } } diff --git a/scripts/dist-test-resolve.mjs b/scripts/dist-test-resolve.mjs index a977d1cf9..a542a0006 100644 --- a/scripts/dist-test-resolve.mjs +++ b/scripts/dist-test-resolve.mjs @@ -15,18 +15,18 @@ import { join } from 'node:path'; // dist-test root — everything compiled lands here const DIST_TEST = new URL('../dist-test/', import.meta.url).href; -// Absolute paths to compiled @sf-run/* entry points +// Absolute paths to compiled @singularity-forge/* entry points const SF_ALIASES = { - '@sf-run/pi-coding-agent': new URL('../dist-test/packages/pi-coding-agent/src/index.js', import.meta.url).href, - '@sf-run/pi-ai/oauth': new URL('../dist-test/packages/pi-ai/src/utils/oauth/index.js', import.meta.url).href, - '@sf-run/pi-ai': new URL('../dist-test/packages/pi-ai/src/index.js', import.meta.url).href, - '@sf-run/pi-agent-core': new URL('../dist-test/packages/pi-agent-core/src/index.js', import.meta.url).href, - '@sf-run/pi-tui': new URL('../dist-test/packages/pi-tui/src/index.js', import.meta.url).href, - '@sf-run/native': new URL('../dist-test/packages/native/src/index.js', import.meta.url).href, + '@singularity-forge/pi-coding-agent': new URL('../dist-test/packages/pi-coding-agent/src/index.js', import.meta.url).href, + '@singularity-forge/pi-ai/oauth': new URL('../dist-test/packages/pi-ai/src/utils/oauth/index.js', import.meta.url).href, + '@singularity-forge/pi-ai': new URL('../dist-test/packages/pi-ai/src/index.js', import.meta.url).href, + '@singularity-forge/pi-agent-core': new URL('../dist-test/packages/pi-agent-core/src/index.js', import.meta.url).href, + '@singularity-forge/pi-tui': new URL('../dist-test/packages/pi-tui/src/index.js', import.meta.url).href, + '@singularity-forge/native': new URL('../dist-test/packages/native/src/index.js', import.meta.url).href, }; export function resolve(specifier, context, nextResolve) { - // 1. @sf-run/* bare imports → compiled dist-test counterpart + // 1. @singularity-forge/* bare imports → compiled dist-test counterpart if (specifier in SF_ALIASES) { return nextResolve(SF_ALIASES[specifier], context); } diff --git a/scripts/link-workspace-packages.cjs b/scripts/link-workspace-packages.cjs index 86e463bc2..f48ee293f 100644 --- a/scripts/link-workspace-packages.cjs +++ b/scripts/link-workspace-packages.cjs @@ -2,15 +2,15 @@ /** * link-workspace-packages.cjs * - * Creates node_modules/@sf-run/* and node_modules/@singularity-forge/* symlinks pointing + * Creates node_modules/@singularity-forge/* and node_modules/@singularity-forge/* symlinks pointing * to shipped packages/* directories. * * During development, npm workspaces creates these automatically. But in the * published tarball, workspace packages are shipped under packages/ (via the - * "files" field) and the @sf-run/* imports in compiled code need node_modules/@sf-run/* + * "files" field) and the @singularity-forge/* imports in compiled code need node_modules/@singularity-forge/* * to resolve. This script bridges the gap. * - * Runs as part of postinstall (before any ESM code that imports @sf-run/*). + * Runs as part of postinstall (before any ESM code that imports @singularity-forge/*). * * On Windows without Developer Mode or administrator rights, creating symlinks * (even NTFS junctions) can fail with EPERM. In that case we fall back to @@ -22,17 +22,17 @@ const { resolve, join } = require('path') const root = resolve(__dirname, '..') const packagesDir = join(root, 'packages') const scopeDirs = { - '@sf-run': join(root, 'node_modules', '@sf-run'), + '@singularity-forge': join(root, 'node_modules', '@singularity-forge'), '@singularity-forge': join(root, 'node_modules', '@singularity-forge'), } // Map directory names to scoped package names const packageMap = { - 'native': { scope: '@sf-run', name: 'native' }, - 'pi-agent-core': { scope: '@sf-run', name: 'pi-agent-core' }, - 'pi-ai': { scope: '@sf-run', name: 'pi-ai' }, - 'pi-coding-agent': { scope: '@sf-run', name: 'pi-coding-agent' }, - 'pi-tui': { scope: '@sf-run', name: 'pi-tui' }, + 'native': { scope: '@singularity-forge', name: 'native' }, + 'pi-agent-core': { scope: '@singularity-forge', name: 'pi-agent-core' }, + 'pi-ai': { scope: '@singularity-forge', name: 'pi-ai' }, + 'pi-coding-agent': { scope: '@singularity-forge', name: 'pi-coding-agent' }, + 'pi-tui': { scope: '@singularity-forge', name: 'pi-tui' }, 'rpc-client': { scope: '@singularity-forge', name: 'rpc-client' }, 'mcp-server': { scope: '@singularity-forge', name: 'mcp-server' }, } diff --git a/scripts/preview-dashboard.ts b/scripts/preview-dashboard.ts index 15220a45e..f97d9b0c0 100644 --- a/scripts/preview-dashboard.ts +++ b/scripts/preview-dashboard.ts @@ -13,7 +13,7 @@ * npx tsx scripts/preview-dashboard.ts --narrow # force 80 cols */ -import { truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import { truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; import { makeUI, GLYPH, INDENT } from "../src/resources/extensions/shared/mod.js"; // ── Minimal ANSI color theme (no Theme class dependency) ──────────────── diff --git a/scripts/validate-pack.js b/scripts/validate-pack.js index 7c9f21b91..ec322c0f3 100644 --- a/scripts/validate-pack.js +++ b/scripts/validate-pack.js @@ -47,8 +47,8 @@ try { npmCacheDir = mkdtempSync(join(tmpdir(), 'validate-pack-npm-cache-')); mkdirSync(npmCacheDir, { recursive: true }); - // --- Guard: workspace packages must not have @sf-run/* cross-deps --- - console.log('==> Checking workspace packages for @sf-run/* cross-deps...'); + // --- Guard: workspace packages must not have @singularity-forge/* cross-deps --- + console.log('==> Checking workspace packages for @singularity-forge/* cross-deps...'); const workspaces = ['native', 'pi-agent-core', 'pi-ai', 'pi-coding-agent', 'pi-tui']; let crossFailed = false; @@ -56,7 +56,7 @@ try { const pkgPath = join(ROOT, 'packages', ws, 'package.json'); if (!existsSync(pkgPath)) continue; const pkg = JSON.parse(readFileSync(pkgPath, 'utf8')); - const deps = Object.keys(pkg.dependencies || {}).filter(d => d.startsWith('@sf-run/')); + const deps = Object.keys(pkg.dependencies || {}).filter(d => d.startsWith('@singularity-forge/')); if (deps.length) { console.log(` LEAKED in ${ws}: ${deps.join(', ')}`); crossFailed = true; @@ -64,11 +64,11 @@ try { } if (crossFailed) { - console.log('ERROR: Workspace packages have @sf-run/* cross-dependencies.'); + console.log('ERROR: Workspace packages have @singularity-forge/* cross-dependencies.'); console.log(' These cause 404s when npm resolves them from the registry.'); process.exit(1); } - console.log(' No @sf-run/* cross-dependencies.'); + console.log(' No @singularity-forge/* cross-dependencies.'); // --- Pack tarball --- console.log('==> Packing tarball...'); @@ -144,10 +144,10 @@ try { process.exit(1); } - // --- Verify @sf-run/* packages resolved correctly post-install --- + // --- Verify @singularity-forge/* packages resolved correctly post-install --- // This catches the Windows-style failure where symlinkSync fails silently and - // node_modules/@sf-run/ is never populated, causing ERR_MODULE_NOT_FOUND at runtime. - console.log('==> Verifying @sf-run/* workspace package resolution...'); + // node_modules/@singularity-forge/ is never populated, causing ERR_MODULE_NOT_FOUND at runtime. + console.log('==> Verifying @singularity-forge/* workspace package resolution...'); const installedRoot = join(installDir, 'node_modules', 'sf-run'); const criticalPackages = [ { scope: '@sf', name: 'pi-coding-agent' }, @@ -167,11 +167,11 @@ try { } } if (resolutionFailed) { - console.log('ERROR: @sf-run/* packages are not resolvable after install.'); + console.log('ERROR: @singularity-forge/* packages are not resolvable after install.'); console.log(' This will cause ERR_MODULE_NOT_FOUND on first run (especially on Windows).'); process.exit(1); } - console.log(' @sf-run/* packages are resolvable.'); + console.log(' @singularity-forge/* packages are resolvable.'); // --- Run the binary to confirm end-to-end resolution --- console.log('==> Running installed binary (sf -v)...'); diff --git a/src/cli.ts b/src/cli.ts index 0e6627660..184368ccb 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -9,7 +9,7 @@ import { InteractiveMode, runPrintMode, runRpcMode, -} from '@sf-run/pi-coding-agent' +} from '@singularity-forge/pi-coding-agent' import { readFileSync } from 'node:fs' import { join } from 'node:path' import { agentDir, sessionsDir, authFilePath } from './app-paths.js' diff --git a/src/headless-answers.ts b/src/headless-answers.ts index d77afb5bd..799bca6d5 100644 --- a/src/headless-answers.ts +++ b/src/headless-answers.ts @@ -7,7 +7,7 @@ */ import { readFileSync } from 'node:fs' -import { serializeJsonLine } from '@sf-run/pi-coding-agent' +import { serializeJsonLine } from '@singularity-forge/pi-coding-agent' // --------------------------------------------------------------------------- // Types diff --git a/src/headless-ui.ts b/src/headless-ui.ts index 42c9447ac..6ae3483c8 100644 --- a/src/headless-ui.ts +++ b/src/headless-ui.ts @@ -8,7 +8,7 @@ import type { Readable } from 'node:stream' -import { RpcClient, attachJsonlLineReader } from '@sf-run/pi-coding-agent' +import { RpcClient, attachJsonlLineReader } from '@singularity-forge/pi-coding-agent' // --------------------------------------------------------------------------- // Types diff --git a/src/headless.ts b/src/headless.ts index 4a2e540ad..36e959d4c 100644 --- a/src/headless.ts +++ b/src/headless.ts @@ -17,9 +17,8 @@ import { join } from 'node:path' import { resolve } from 'node:path' import { ChildProcess } from 'node:child_process' -import { SessionManager } from '@sf-run/pi-coding-agent' -import { RpcClient } from '@singularity-forge/rpc-client' -import type { SessionInfo } from '@sf-run/pi-coding-agent' +import { SessionManager, RpcClient } from '@singularity-forge/pi-coding-agent' +import type { SessionInfo } from '@singularity-forge/pi-coding-agent' import { getProjectSessionsDir } from './project-sessions.js' import { loadAndValidateAnswerFile, AnswerInjector } from './headless-answers.js' diff --git a/src/loader.ts b/src/loader.ts index 59715918e..02570d62b 100644 --- a/src/loader.ts +++ b/src/loader.ts @@ -177,18 +177,18 @@ if (process.env.HTTP_PROXY || process.env.HTTPS_PROXY || process.env.http_proxy } // Ensure workspace packages are linked (or copied on Windows) before importing -// cli.js (which imports @sf-run/*). +// cli.js (which imports @singularity-forge/*). // npm postinstall handles this normally, but npx --ignore-scripts skips postinstall. // On Windows without Developer Mode or admin rights, symlinkSync will throw even for // 'junction' type — so we fall back to cpSync (a full directory copy) which works // everywhere without elevated permissions. -const sfRunScopeDir = join(sfNodeModules, '@sf-run') +const sfScopeDir = join(sfNodeModules, '@singularity-forge') const packagesDir = join(sfRootDir, 'packages') const wsPackages = ['native', 'pi-agent-core', 'pi-ai', 'pi-coding-agent', 'pi-tui'] try { - if (!existsSync(sfRunScopeDir)) mkdirSync(sfRunScopeDir, { recursive: true }) + if (!existsSync(sfScopeDir)) mkdirSync(sfScopeDir, { recursive: true }) for (const pkg of wsPackages) { - const target = join(sfRunScopeDir, pkg) + const target = join(sfScopeDir, pkg) const source = join(packagesDir, pkg) if (!existsSync(source) || existsSync(target)) continue try { @@ -205,19 +205,19 @@ try { // symlink+copy attempts, emit a clear diagnostic instead of a cryptic // ERR_MODULE_NOT_FOUND from deep inside cli.js. const criticalPackages = ['pi-coding-agent'] -const missingPackages = criticalPackages.filter(pkg => !existsSync(join(sfRunScopeDir, pkg))) +const missingPackages = criticalPackages.filter(pkg => !existsSync(join(sfScopeDir, pkg))) if (missingPackages.length > 0) { - const missing = missingPackages.map(p => `@sf-run/${p}`).join(', ') + const missing = missingPackages.map(p => `@singularity-forge/${p}`).join(', ') process.stderr.write( `\nError: SF installation is broken — missing packages: ${missing}\n\n` + `This is usually caused by one of:\n` + - ` • An outdated version installed from npm (run: npm install -g sf-run@latest)\n` + + ` • An outdated version installed from npm (run: npm install -g singularity-foundry@latest)\n` + ` • The packages/ directory was excluded from the installed tarball\n` + ` • A filesystem error prevented linking or copying the workspace packages\n\n` + `Fix it by reinstalling:\n\n` + - ` npm install -g sf-run@latest\n\n` + + ` npm install -g singularity-foundry@latest\n\n` + `If the issue persists, please open an issue at:\n` + - ` https://github.com/singularity-forge/sf-run/issues\n` + ` https://github.com/singularity-ng/singularity-foundry/issues\n` ) process.exit(1) } diff --git a/src/mcp-server.ts b/src/mcp-server.ts index bf87185bf..9bda5fd05 100644 --- a/src/mcp-server.ts +++ b/src/mcp-server.ts @@ -1,6 +1,6 @@ /** * Minimal tool interface matching SF's AgentTool shape. - * Avoids a direct dependency on @sf-run/pi-agent-core from this compiled module. + * Avoids a direct dependency on @singularity-forge/pi-agent-core from this compiled module. */ export interface McpToolDef { name: string diff --git a/src/onboarding.ts b/src/onboarding.ts index ff97d2b66..2861299f6 100644 --- a/src/onboarding.ts +++ b/src/onboarding.ts @@ -13,7 +13,7 @@ import { execFile } from 'node:child_process' import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs' import { dirname, join } from 'node:path' -import type { AuthStorage } from '@sf-run/pi-coding-agent' +import type { AuthStorage } from '@singularity-forge/pi-coding-agent' import { renderLogo } from './logo.js' import { agentDir } from './app-paths.js' import { isClaudeCliReady } from './claude-cli-check.js' diff --git a/src/pi-migration.ts b/src/pi-migration.ts index f717170a2..2eed3a74e 100644 --- a/src/pi-migration.ts +++ b/src/pi-migration.ts @@ -7,7 +7,7 @@ import { existsSync, readFileSync } from 'node:fs' import { homedir } from 'node:os' import { join } from 'node:path' -import type { AuthStorage, AuthCredential } from '@sf-run/pi-coding-agent' +import type { AuthStorage, AuthCredential } from '@singularity-forge/pi-coding-agent' const PI_AUTH_PATH = join(homedir(), '.pi', 'agent', 'auth.json') const PI_SETTINGS_PATH = join(homedir(), '.pi', 'agent', 'settings.json') diff --git a/src/provider-migrations.ts b/src/provider-migrations.ts index dbdd93f28..1bcdb3351 100644 --- a/src/provider-migrations.ts +++ b/src/provider-migrations.ts @@ -1,4 +1,4 @@ -import type { AuthStorage } from "@sf-run/pi-coding-agent" +import type { AuthStorage } from "@singularity-forge/pi-coding-agent" type AnthropicMigrationDeps = { authStorage: Pick diff --git a/src/resource-loader.ts b/src/resource-loader.ts index f817ec47d..4eff22b49 100644 --- a/src/resource-loader.ts +++ b/src/resource-loader.ts @@ -1,4 +1,4 @@ -import { DefaultResourceLoader, sortExtensionPaths } from '@sf-run/pi-coding-agent' +import { DefaultResourceLoader, sortExtensionPaths } from '@singularity-forge/pi-coding-agent' if (process.env.SF_DEBUG_EXTENSIONS) process.stderr.write("[sf-debug] resource-loader.ts loaded\n") import { createHash } from 'node:crypto' import { homedir } from 'node:os' @@ -286,13 +286,13 @@ function copyDirRecursive(src: string, dest: string): void { * Native ESM `import()` ignores NODE_PATH — it resolves packages by walking * up the directory tree from the importing file. Extension files synced to * ~/.sf/agent/extensions/ have no ancestor node_modules, so imports of - * @sf-run/* packages fail. The symlink makes Node's standard resolution find + * @singularity-forge/* packages fail. The symlink makes Node's standard resolution find * them without requiring every call site to use jiti. * * Layout differences by install method: * - Source/monorepo: packageRoot/node_modules has everything → simple symlink - * - npm/bun global: deps hoisted to dirname(packageRoot), including @sf-run/* → simple symlink - * - pnpm global: external deps hoisted, but @sf-run/* stays in packageRoot/node_modules + * - npm/bun global: deps hoisted to dirname(packageRoot), including @singularity-forge/* → simple symlink + * - pnpm global: external deps hoisted, but @singularity-forge/* stays in packageRoot/node_modules * → merged directory with symlinks from both roots (#3529, #3564) */ function ensureNodeModulesSymlink(agentDir: string): void { @@ -307,7 +307,7 @@ function ensureNodeModulesSymlink(agentDir: string): void { return } - // Global install: check if workspace scopes (@sf-run/*) are hoisted. + // Global install: check if workspace scopes (@singularity-forge/*) are hoisted. // npm/bun hoist everything; pnpm keeps workspace packages internal. if (!hasMissingWorkspaceScopes(hoistedNodeModules, internalNodeModules)) { // Everything is hoisted — simple symlink to parent node_modules @@ -319,12 +319,12 @@ function ensureNodeModulesSymlink(agentDir: string): void { reconcileMergedNodeModules(agentNodeModules, hoistedNodeModules, internalNodeModules) } -/** Check if any @sf-run* scopes exist in internal but not in hoisted node_modules */ +/** Check if any @singularity-forge* scopes exist in internal but not in hoisted node_modules */ function hasMissingWorkspaceScopes(hoisted: string, internal: string): boolean { if (!existsSync(internal)) return false try { for (const entry of readdirSync(internal, { withFileTypes: true })) { - if (entry.isDirectory() && entry.name.startsWith('@sf-run') && + if (entry.isDirectory() && entry.name.startsWith('@singularity-forge') && !existsSync(join(hoisted, entry.name))) { return true } @@ -358,8 +358,8 @@ function reconcileSymlink(link: string, target: string): void { /** * Create a real node_modules directory containing symlinks from both the - * hoisted root (external deps) and internal root (@sf-run/* workspace packages). - * Used for pnpm global installs where @sf-run/* isn't hoisted. + * hoisted root (external deps) and internal root (@singularity-forge/* workspace packages). + * Used for pnpm global installs where @singularity-forge/* isn't hoisted. */ function reconcileMergedNodeModules( agentNodeModules: string, @@ -401,7 +401,7 @@ function reconcileMergedNodeModules( } // Overlay internal node_modules entries that weren't hoisted. - // This covers @sf-run/* workspace packages AND optional deps like + // This covers @singularity-forge/* workspace packages AND optional deps like // @anthropic-ai/claude-agent-sdk that npm keeps internal. try { for (const entry of readdirSync(internal, { withFileTypes: true })) { @@ -539,7 +539,7 @@ export function initResources(agentDir: string): void { // Ensure ~/.sf/agent/node_modules symlinks to SF's node_modules on EVERY // launch, not just during resource syncs. A stale/broken symlink makes ALL - // extensions fail to resolve @sf-run/* packages, rendering SF non-functional. + // extensions fail to resolve @singularity-forge/* packages, rendering SF non-functional. ensureNodeModulesSymlink(agentDir) // Migrate legacy skills on every launch (not gated by manifest) so that diff --git a/src/resources/extensions/ask-user-questions.ts b/src/resources/extensions/ask-user-questions.ts index 5fb4226e4..77922f498 100644 --- a/src/resources/extensions/ask-user-questions.ts +++ b/src/resources/extensions/ask-user-questions.ts @@ -9,9 +9,9 @@ * Based on: https://github.com/openai/codex (codex-rs/core/src/tools/handlers/ask_user_questions.rs) */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { sanitizeError } from "./shared/sanitize.js"; -import { Text } from "@sf-run/pi-tui"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import { showInterviewRound, diff --git a/src/resources/extensions/async-jobs/async-bash-tool.ts b/src/resources/extensions/async-jobs/async-bash-tool.ts index edd58c225..bf3607334 100644 --- a/src/resources/extensions/async-jobs/async-bash-tool.ts +++ b/src/resources/extensions/async-jobs/async-bash-tool.ts @@ -6,13 +6,13 @@ * with await_job. */ -import type { ToolDefinition } from "@sf-run/pi-coding-agent"; +import type { ToolDefinition } from "@singularity-forge/pi-coding-agent"; import { getShellConfig, sanitizeCommand, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import { spawn, spawnSync } from "node:child_process"; import { createWriteStream } from "node:fs"; diff --git a/src/resources/extensions/async-jobs/await-tool.ts b/src/resources/extensions/async-jobs/await-tool.ts index fcc33ce40..cf09c9bc9 100644 --- a/src/resources/extensions/async-jobs/await-tool.ts +++ b/src/resources/extensions/async-jobs/await-tool.ts @@ -5,7 +5,7 @@ * If omitted, waits for any running job to complete. */ -import type { ToolDefinition } from "@sf-run/pi-coding-agent"; +import type { ToolDefinition } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { AsyncJobManager, Job } from "./job-manager.js"; diff --git a/src/resources/extensions/async-jobs/cancel-job-tool.ts b/src/resources/extensions/async-jobs/cancel-job-tool.ts index a5969c107..b58046547 100644 --- a/src/resources/extensions/async-jobs/cancel-job-tool.ts +++ b/src/resources/extensions/async-jobs/cancel-job-tool.ts @@ -2,7 +2,7 @@ * cancel_job tool — cancel a running background job. */ -import type { ToolDefinition } from "@sf-run/pi-coding-agent"; +import type { ToolDefinition } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { AsyncJobManager } from "./job-manager.js"; diff --git a/src/resources/extensions/async-jobs/index.ts b/src/resources/extensions/async-jobs/index.ts index eb55cad5f..2e72c242e 100644 --- a/src/resources/extensions/async-jobs/index.ts +++ b/src/resources/extensions/async-jobs/index.ts @@ -14,7 +14,7 @@ * /jobs — show running and recent background jobs */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { AsyncJobManager, type Job } from "./job-manager.js"; import { createAsyncBashTool } from "./async-bash-tool.js"; import { createAwaitTool } from "./await-tool.js"; diff --git a/src/resources/extensions/aws-auth/index.ts b/src/resources/extensions/aws-auth/index.ts index 113de7512..5c209a1b9 100644 --- a/src/resources/extensions/aws-auth/index.ts +++ b/src/resources/extensions/aws-auth/index.ts @@ -47,7 +47,7 @@ import { exec } from "node:child_process"; import { existsSync, readFileSync } from "node:fs"; import { join } from "node:path"; import { homedir } from "node:os"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; /** Matches AWS SDK / Bedrock / SSO credential and token errors. */ const AWS_AUTH_ERROR_RE = diff --git a/src/resources/extensions/bg-shell/bg-shell-command.ts b/src/resources/extensions/bg-shell/bg-shell-command.ts index ac6769a32..4adb1420c 100644 --- a/src/resources/extensions/bg-shell/bg-shell-command.ts +++ b/src/resources/extensions/bg-shell/bg-shell-command.ts @@ -2,8 +2,8 @@ * /bg slash command registration — interactive process manager overlay and CLI subcommands. */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { Key } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { Key } from "@singularity-forge/pi-tui"; import { shortcutDesc } from "../shared/terminal.js"; import { diff --git a/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts b/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts index 5fcd7a363..e4ea2b8a1 100644 --- a/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts +++ b/src/resources/extensions/bg-shell/bg-shell-lifecycle.ts @@ -7,11 +7,11 @@ import type { ExtensionAPI, ExtensionContext, Theme, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { truncateToWidth, visibleWidth, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { processes, @@ -43,7 +43,7 @@ export function registerBgShellLifecycle(pi: ExtensionAPI, state: BgShellSharedS cleanupAll(); // Also kill bash-tool spawned children that bg-shell doesn't track try { - const { listDescendants } = require("@sf-run/native") as typeof import("@sf-run/native"); + const { listDescendants } = require("@singularity-forge/native") as typeof import("@singularity-forge/native"); const descendants = listDescendants(process.pid); for (const childPid of descendants) { try { process.kill(childPid, "SIGKILL"); } catch {} diff --git a/src/resources/extensions/bg-shell/bg-shell-tool.ts b/src/resources/extensions/bg-shell/bg-shell-tool.ts index 8350e9dc4..7aceeb80f 100644 --- a/src/resources/extensions/bg-shell/bg-shell-tool.ts +++ b/src/resources/extensions/bg-shell/bg-shell-tool.ts @@ -2,9 +2,9 @@ * bg_shell tool registration — the core tool that agents use to manage background processes. */ -import { StringEnum } from "@sf-run/pi-ai"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import { StringEnum } from "@singularity-forge/pi-ai"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import type { BgProcessInfo, ProcessType } from "./types.js"; diff --git a/src/resources/extensions/bg-shell/index.ts b/src/resources/extensions/bg-shell/index.ts index d1fdbe3f5..304902cbd 100644 --- a/src/resources/extensions/bg-shell/index.ts +++ b/src/resources/extensions/bg-shell/index.ts @@ -5,7 +5,7 @@ * block on the full background-process stack before the TUI paints. */ -import { importExtensionModule, type ExtensionAPI, type ExtensionContext } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI, type ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { registerBgShellLifecycle } from "./bg-shell-lifecycle.js"; export interface BgShellSharedState { diff --git a/src/resources/extensions/bg-shell/output-formatter.ts b/src/resources/extensions/bg-shell/output-formatter.ts index 01dc74e42..084b735e4 100644 --- a/src/resources/extensions/bg-shell/output-formatter.ts +++ b/src/resources/extensions/bg-shell/output-formatter.ts @@ -6,7 +6,7 @@ import { truncateHead, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import type { BgProcess, OutputDigest, OutputLine, GetOutputOptions } from "./types.js"; import { ERROR_PATTERNS, diff --git a/src/resources/extensions/bg-shell/overlay.ts b/src/resources/extensions/bg-shell/overlay.ts index 87dfee24c..44bef2fea 100644 --- a/src/resources/extensions/bg-shell/overlay.ts +++ b/src/resources/extensions/bg-shell/overlay.ts @@ -2,8 +2,8 @@ * TUI: Background Process Manager Overlay. */ -import type { Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import type { BgProcess, ProcessStatus } from "./types.js"; import { ERROR_PATTERNS, WARNING_PATTERNS } from "./types.js"; import { formatUptime, formatTimeAgo } from "./utilities.js"; diff --git a/src/resources/extensions/bg-shell/process-manager.ts b/src/resources/extensions/bg-shell/process-manager.ts index 83bb83b90..f784ddf9d 100644 --- a/src/resources/extensions/bg-shell/process-manager.ts +++ b/src/resources/extensions/bg-shell/process-manager.ts @@ -7,7 +7,7 @@ import { spawn, spawnSync } from "node:child_process"; import { randomUUID } from "node:crypto"; import { writeFileSync, readFileSync, existsSync, mkdirSync } from "node:fs"; import { join } from "node:path"; -import { getShellConfig, sanitizeCommand } from "@sf-run/pi-coding-agent"; +import { getShellConfig, sanitizeCommand } from "@singularity-forge/pi-coding-agent"; import { rewriteCommandWithRtk } from "../shared/rtk.js"; import type { BgProcess, diff --git a/src/resources/extensions/browser-tools/index.ts b/src/resources/extensions/browser-tools/index.ts index 657f81059..4088cd7e1 100644 --- a/src/resources/extensions/browser-tools/index.ts +++ b/src/resources/extensions/browser-tools/index.ts @@ -1,5 +1,5 @@ /** browser-tools — pi extension: full browser interaction via Playwright. */ -import { importExtensionModule, type ExtensionAPI } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI } from "@singularity-forge/pi-coding-agent"; let registrationPromise: Promise | null = null; diff --git a/src/resources/extensions/browser-tools/state.ts b/src/resources/extensions/browser-tools/state.ts index 4c8839fa3..b06882a80 100644 --- a/src/resources/extensions/browser-tools/state.ts +++ b/src/resources/extensions/browser-tools/state.ts @@ -10,7 +10,7 @@ */ import type { Browser, BrowserContext, Frame, Page } from "playwright"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import path from "node:path"; import { createActionTimeline, diff --git a/src/resources/extensions/browser-tools/tools/action-cache.ts b/src/resources/extensions/browser-tools/tools/action-cache.ts index 4e330c4c5..298e0d168 100644 --- a/src/resources/extensions/browser-tools/tools/action-cache.ts +++ b/src/resources/extensions/browser-tools/tools/action-cache.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/assertions.ts b/src/resources/extensions/browser-tools/tools/assertions.ts index 16e46a81f..457ea0376 100644 --- a/src/resources/extensions/browser-tools/tools/assertions.ts +++ b/src/resources/extensions/browser-tools/tools/assertions.ts @@ -1,6 +1,6 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { diffCompactStates, evaluateAssertionChecks, diff --git a/src/resources/extensions/browser-tools/tools/codegen.ts b/src/resources/extensions/browser-tools/tools/codegen.ts index 43d72d285..e4d2dec7e 100644 --- a/src/resources/extensions/browser-tools/tools/codegen.ts +++ b/src/resources/extensions/browser-tools/tools/codegen.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; import { getActionTimeline } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/device.ts b/src/resources/extensions/browser-tools/tools/device.ts index d8b91e6a5..1cd44251f 100644 --- a/src/resources/extensions/browser-tools/tools/device.ts +++ b/src/resources/extensions/browser-tools/tools/device.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/extract.ts b/src/resources/extensions/browser-tools/tools/extract.ts index 533626c7c..81761b997 100644 --- a/src/resources/extensions/browser-tools/tools/extract.ts +++ b/src/resources/extensions/browser-tools/tools/extract.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/forms.ts b/src/resources/extensions/browser-tools/tools/forms.ts index 1e9ff7942..fc8a64a05 100644 --- a/src/resources/extensions/browser-tools/tools/forms.ts +++ b/src/resources/extensions/browser-tools/tools/forms.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps, CompactPageState } from "../state.js"; import { diff --git a/src/resources/extensions/browser-tools/tools/injection-detect.ts b/src/resources/extensions/browser-tools/tools/injection-detect.ts index 1020e16d1..f22df96e2 100644 --- a/src/resources/extensions/browser-tools/tools/injection-detect.ts +++ b/src/resources/extensions/browser-tools/tools/injection-detect.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/inspection.ts b/src/resources/extensions/browser-tools/tools/inspection.ts index cd2feae00..2aceb7058 100644 --- a/src/resources/extensions/browser-tools/tools/inspection.ts +++ b/src/resources/extensions/browser-tools/tools/inspection.ts @@ -1,6 +1,6 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import type { ToolDeps } from "../state.js"; import { getConsoleLogs, diff --git a/src/resources/extensions/browser-tools/tools/intent.ts b/src/resources/extensions/browser-tools/tools/intent.ts index 05cb474d3..d8630e635 100644 --- a/src/resources/extensions/browser-tools/tools/intent.ts +++ b/src/resources/extensions/browser-tools/tools/intent.ts @@ -1,6 +1,6 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { diffCompactStates } from "../core.js"; import type { ToolDeps, CompactPageState } from "../state.js"; import { diff --git a/src/resources/extensions/browser-tools/tools/interaction.ts b/src/resources/extensions/browser-tools/tools/interaction.ts index 31882695b..df39a95c0 100644 --- a/src/resources/extensions/browser-tools/tools/interaction.ts +++ b/src/resources/extensions/browser-tools/tools/interaction.ts @@ -1,6 +1,6 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { diffCompactStates, } from "../core.js"; diff --git a/src/resources/extensions/browser-tools/tools/navigation.ts b/src/resources/extensions/browser-tools/tools/navigation.ts index 7da969a81..0624d1e80 100644 --- a/src/resources/extensions/browser-tools/tools/navigation.ts +++ b/src/resources/extensions/browser-tools/tools/navigation.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import { diffCompactStates, diff --git a/src/resources/extensions/browser-tools/tools/network-mock.ts b/src/resources/extensions/browser-tools/tools/network-mock.ts index 7b7271f74..429eb7637 100644 --- a/src/resources/extensions/browser-tools/tools/network-mock.ts +++ b/src/resources/extensions/browser-tools/tools/network-mock.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/pages.ts b/src/resources/extensions/browser-tools/tools/pages.ts index 9b0688d62..7fc227e0d 100644 --- a/src/resources/extensions/browser-tools/tools/pages.ts +++ b/src/resources/extensions/browser-tools/tools/pages.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import { registryGetActive, diff --git a/src/resources/extensions/browser-tools/tools/pdf.ts b/src/resources/extensions/browser-tools/tools/pdf.ts index 3fe76568c..fdd8f41d7 100644 --- a/src/resources/extensions/browser-tools/tools/pdf.ts +++ b/src/resources/extensions/browser-tools/tools/pdf.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/refs.ts b/src/resources/extensions/browser-tools/tools/refs.ts index 33394230c..abb32d550 100644 --- a/src/resources/extensions/browser-tools/tools/refs.ts +++ b/src/resources/extensions/browser-tools/tools/refs.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import { getSnapshotModeConfig, diff --git a/src/resources/extensions/browser-tools/tools/screenshot.ts b/src/resources/extensions/browser-tools/tools/screenshot.ts index 8afc326c0..9c42be641 100644 --- a/src/resources/extensions/browser-tools/tools/screenshot.ts +++ b/src/resources/extensions/browser-tools/tools/screenshot.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; import { getScreenshotFormatOverride, getScreenshotQualityDefault } from "../capture.js"; diff --git a/src/resources/extensions/browser-tools/tools/session.ts b/src/resources/extensions/browser-tools/tools/session.ts index 64f3f93b3..e67ffb8a0 100644 --- a/src/resources/extensions/browser-tools/tools/session.ts +++ b/src/resources/extensions/browser-tools/tools/session.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import { stat } from "node:fs/promises"; import path from "node:path"; diff --git a/src/resources/extensions/browser-tools/tools/state-persistence.ts b/src/resources/extensions/browser-tools/tools/state-persistence.ts index 84df1824c..5c6249a82 100644 --- a/src/resources/extensions/browser-tools/tools/state-persistence.ts +++ b/src/resources/extensions/browser-tools/tools/state-persistence.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/verify.ts b/src/resources/extensions/browser-tools/tools/verify.ts index 96b83e55d..e9317eeee 100644 --- a/src/resources/extensions/browser-tools/tools/verify.ts +++ b/src/resources/extensions/browser-tools/tools/verify.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/visual-diff.ts b/src/resources/extensions/browser-tools/tools/visual-diff.ts index d8cfd5d9f..1c5ef3452 100644 --- a/src/resources/extensions/browser-tools/tools/visual-diff.ts +++ b/src/resources/extensions/browser-tools/tools/visual-diff.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/tools/wait.ts b/src/resources/extensions/browser-tools/tools/wait.ts index 12f54e1d5..a8a22ac77 100644 --- a/src/resources/extensions/browser-tools/tools/wait.ts +++ b/src/resources/extensions/browser-tools/tools/wait.ts @@ -1,6 +1,6 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { validateWaitParams, createRegionStableScript, diff --git a/src/resources/extensions/browser-tools/tools/zoom.ts b/src/resources/extensions/browser-tools/tools/zoom.ts index 470062c37..7d1cbd075 100644 --- a/src/resources/extensions/browser-tools/tools/zoom.ts +++ b/src/resources/extensions/browser-tools/tools/zoom.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import type { ToolDeps } from "../state.js"; diff --git a/src/resources/extensions/browser-tools/utils.ts b/src/resources/extensions/browser-tools/utils.ts index c34f21d89..318a39e3f 100644 --- a/src/resources/extensions/browser-tools/utils.ts +++ b/src/resources/extensions/browser-tools/utils.ts @@ -12,7 +12,7 @@ import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, truncateHead, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { beginAction, finishAction, diff --git a/src/resources/extensions/claude-code-cli/index.ts b/src/resources/extensions/claude-code-cli/index.ts index f1ff710be..11e8adc14 100644 --- a/src/resources/extensions/claude-code-cli/index.ts +++ b/src/resources/extensions/claude-code-cli/index.ts @@ -11,7 +11,7 @@ * never touches credentials, never offers a login flow. */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { CLAUDE_CODE_MODELS } from "./models.js"; import { isClaudeCodeReady } from "./readiness.js"; import { streamViaClaudeCode } from "./stream-adapter.js"; diff --git a/src/resources/extensions/claude-code-cli/package.json b/src/resources/extensions/claude-code-cli/package.json index de619e744..97096ad2c 100644 --- a/src/resources/extensions/claude-code-cli/package.json +++ b/src/resources/extensions/claude-code-cli/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/claude-code-cli", + "name": "@singularity-forge/claude-code-cli", "private": true, "version": "1.0.0", "type": "module", diff --git a/src/resources/extensions/claude-code-cli/partial-builder.ts b/src/resources/extensions/claude-code-cli/partial-builder.ts index dd94f4fe7..962280a81 100644 --- a/src/resources/extensions/claude-code-cli/partial-builder.ts +++ b/src/resources/extensions/claude-code-cli/partial-builder.ts @@ -15,8 +15,8 @@ import type { ToolCall, Usage, WebSearchResultContent, -} from "@sf-run/pi-ai"; -import { hasXmlParameterTags, repairToolJson } from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; +import { hasXmlParameterTags, repairToolJson } from "@singularity-forge/pi-ai"; import type { BetaContentBlock, BetaRawMessageStreamEvent, NonNullableUsage } from "./sdk-types.js"; // --------------------------------------------------------------------------- diff --git a/src/resources/extensions/claude-code-cli/stream-adapter.ts b/src/resources/extensions/claude-code-cli/stream-adapter.ts index 86b182f14..a22b33aff 100644 --- a/src/resources/extensions/claude-code-cli/stream-adapter.ts +++ b/src/resources/extensions/claude-code-cli/stream-adapter.ts @@ -16,9 +16,9 @@ import type { SimpleStreamOptions, ThinkingLevel, ToolCall, -} from "@sf-run/pi-ai"; -import type { ExtensionUIContext } from "@sf-run/pi-coding-agent"; -import { EventStream, mapThinkingLevelToEffort, supportsAdaptiveThinking } from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; +import type { ExtensionUIContext } from "@singularity-forge/pi-coding-agent"; +import { EventStream, mapThinkingLevelToEffort, supportsAdaptiveThinking } from "@singularity-forge/pi-ai"; import { execSync } from "node:child_process"; import { PartialMessageBuilder, ZERO_USAGE, mapUsage } from "./partial-builder.js"; import { buildWorkflowMcpServers } from "../sf/workflow-mcp.js"; @@ -131,7 +131,7 @@ const SENSITIVE_FIELD_PATTERN = /(password|passphrase|secret|token|api[_\s-]*key /** * Construct an AssistantMessageEventStream using EventStream directly. - * (The class itself is only re-exported as a type from the @sf-run/pi-ai barrel.) + * (The class itself is only re-exported as a type from the @singularity-forge/pi-ai barrel.) */ function createAssistantStream(): AssistantMessageEventStream { return new EventStream( diff --git a/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts b/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts index 02f8a7851..b9943d78b 100644 --- a/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts +++ b/src/resources/extensions/claude-code-cli/tests/stream-adapter.test.ts @@ -21,7 +21,7 @@ import { parseClaudeLookupOutput, roundResultToElicitationContent, } from "../stream-adapter.ts"; -import type { AssistantMessage, Context, Message } from "@sf-run/pi-ai"; +import type { AssistantMessage, Context, Message } from "@singularity-forge/pi-ai"; import type { SDKUserMessage } from "../sdk-types.ts"; // --------------------------------------------------------------------------- diff --git a/src/resources/extensions/cmux/package.json b/src/resources/extensions/cmux/package.json index 309571b89..b0f948b38 100644 --- a/src/resources/extensions/cmux/package.json +++ b/src/resources/extensions/cmux/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/cmux", + "name": "@singularity-forge/cmux", "private": true, "type": "module", "description": "cmux integration library — used by other extensions, not an extension itself", diff --git a/src/resources/extensions/context7/index.ts b/src/resources/extensions/context7/index.ts index 802b7c68a..9ade883f4 100644 --- a/src/resources/extensions/context7/index.ts +++ b/src/resources/extensions/context7/index.ts @@ -22,14 +22,14 @@ * export CONTEXT7_API_KEY=your_key (get one at context7.com/dashboard) */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateHead, -} from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; // ─── API types ──────────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/genai-proxy/index.ts b/src/resources/extensions/genai-proxy/index.ts index cdf235de8..30c00f1da 100644 --- a/src/resources/extensions/genai-proxy/index.ts +++ b/src/resources/extensions/genai-proxy/index.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { installGenaiProxyExtension } from "./proxy-command.js"; export { installGenaiProxyExtension, resolveProxyPort } from "./proxy-command.js"; diff --git a/src/resources/extensions/genai-proxy/proxy-command.ts b/src/resources/extensions/genai-proxy/proxy-command.ts index 75e033c2f..427776868 100644 --- a/src/resources/extensions/genai-proxy/proxy-command.ts +++ b/src/resources/extensions/genai-proxy/proxy-command.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext, ExtensionStartupContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext, ExtensionStartupContext } from "@singularity-forge/pi-coding-agent"; import { createProxyServer, type ProxyServer } from "./proxy-server.js"; const PROXY_COMMAND_NAME = "genai-proxy"; diff --git a/src/resources/extensions/genai-proxy/proxy-server.ts b/src/resources/extensions/genai-proxy/proxy-server.ts index 5f6ff7776..c5d333054 100644 --- a/src/resources/extensions/genai-proxy/proxy-server.ts +++ b/src/resources/extensions/genai-proxy/proxy-server.ts @@ -8,8 +8,8 @@ import { type Context, type Model, type ProviderStreamOptions, -} from "@sf-run/pi-ai"; -import type { ModelRegistry } from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-ai"; +import type { ModelRegistry } from "@singularity-forge/pi-coding-agent"; const LISTEN_ADDRESS = "127.0.0.1"; const OPENAI_CREATED_TIMESTAMP = 1_677_610_602; diff --git a/src/resources/extensions/genai-proxy/tests/proxy-server.test.ts b/src/resources/extensions/genai-proxy/tests/proxy-server.test.ts index 2f7a49b06..75a511f9f 100644 --- a/src/resources/extensions/genai-proxy/tests/proxy-server.test.ts +++ b/src/resources/extensions/genai-proxy/tests/proxy-server.test.ts @@ -1,7 +1,7 @@ import assert from "node:assert/strict"; import { afterEach, describe, it } from "node:test"; -import { AuthStorage, ModelRegistry } from "@sf-run/pi-coding-agent"; -import type { AssistantMessageEventStream, Api, Model } from "@sf-run/pi-ai"; +import { AuthStorage, ModelRegistry } from "@singularity-forge/pi-coding-agent"; +import type { AssistantMessageEventStream, Api, Model } from "@singularity-forge/pi-ai"; import { createProxyServer, type ProxyServer } from "../proxy-server.ts"; let serverCleanup: ProxyServer | undefined; diff --git a/src/resources/extensions/get-secrets-from-user.ts b/src/resources/extensions/get-secrets-from-user.ts index 9687e9212..97b599809 100644 --- a/src/resources/extensions/get-secrets-from-user.ts +++ b/src/resources/extensions/get-secrets-from-user.ts @@ -10,8 +10,8 @@ import { readFile, writeFile } from "node:fs/promises"; import { existsSync, statSync } from "node:fs"; import { resolve } from "node:path"; -import type { ExtensionAPI, Theme } from "@sf-run/pi-coding-agent"; -import { Editor, type EditorTheme, Key, matchesKey, Text, truncateToWidth, wrapTextWithAnsi } from "@sf-run/pi-tui"; +import type { ExtensionAPI, Theme } from "@singularity-forge/pi-coding-agent"; +import { Editor, type EditorTheme, Key, matchesKey, Text, truncateToWidth, wrapTextWithAnsi } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import { makeUI } from "./shared/tui.js"; import { maskEditorLine, type ProgressStatus } from "./shared/mod.js"; @@ -86,7 +86,7 @@ async function writeEnvKey(filePath: string, key: string, value: string): Promis // ─── Exported utilities ─────────────────────────────────────────────────────── // Re-export from env-utils.ts so existing consumers still work. -// The implementation lives in env-utils.ts to avoid pulling @sf-run/pi-tui +// The implementation lives in env-utils.ts to avoid pulling @singularity-forge/pi-tui // into modules that only need env-checking (e.g. files.ts during reports). import { checkExistingEnvKeys } from "./sf/env-utils.js"; export { checkExistingEnvKeys }; diff --git a/src/resources/extensions/github-sync/index.ts b/src/resources/extensions/github-sync/index.ts index e389848f2..45aca93f3 100644 --- a/src/resources/extensions/github-sync/index.ts +++ b/src/resources/extensions/github-sync/index.ts @@ -10,7 +10,7 @@ * and status display. */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { bootstrapSync } from "./sync.js"; import { loadSyncMapping } from "./mapping.js"; import { ghIsAvailable } from "./cli.js"; @@ -39,7 +39,7 @@ export default function (pi: ExtensionAPI) { }); } -async function showStatus(ctx: import("@sf-run/pi-coding-agent").ExtensionCommandContext) { +async function showStatus(ctx: import("@singularity-forge/pi-coding-agent").ExtensionCommandContext) { if (!ghIsAvailable()) { ctx.ui.notify("GitHub sync: `gh` CLI not installed or not authenticated.", "warning"); return; @@ -69,7 +69,7 @@ async function showStatus(ctx: import("@sf-run/pi-coding-agent").ExtensionComman ); } -async function runBootstrap(ctx: import("@sf-run/pi-coding-agent").ExtensionCommandContext) { +async function runBootstrap(ctx: import("@singularity-forge/pi-coding-agent").ExtensionCommandContext) { if (!ghIsAvailable()) { ctx.ui.notify("GitHub sync: `gh` CLI not installed or not authenticated.", "warning"); return; diff --git a/src/resources/extensions/google-search/index.ts b/src/resources/extensions/google-search/index.ts index 6008df016..043cda1da 100644 --- a/src/resources/extensions/google-search/index.ts +++ b/src/resources/extensions/google-search/index.ts @@ -10,14 +10,14 @@ * returns it with source URLs from grounding metadata. */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, truncateHead, -} from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; // ── Types ──────────────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/guardrails/index.ts b/src/resources/extensions/guardrails/index.ts index aa7b27405..4ab09cf51 100644 --- a/src/resources/extensions/guardrails/index.ts +++ b/src/resources/extensions/guardrails/index.ts @@ -9,7 +9,7 @@ * - Blocks writes to protected paths (.env, .git, .ssh, etc.) */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import * as path from "node:path"; // ============================================================================ diff --git a/src/resources/extensions/mac-tools/index.ts b/src/resources/extensions/mac-tools/index.ts index 7a12f7de2..9957642b2 100644 --- a/src/resources/extensions/mac-tools/index.ts +++ b/src/resources/extensions/mac-tools/index.ts @@ -12,8 +12,8 @@ * - All Swift debug output goes to stderr; only JSON on stdout */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { StringEnum } from "@sf-run/pi-ai"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { Type } from "@sinclair/typebox"; import { execFileSync } from "node:child_process"; import { statSync, readdirSync } from "node:fs"; diff --git a/src/resources/extensions/mcp-client/index.ts b/src/resources/extensions/mcp-client/index.ts index f995e7563..2ed6b7729 100644 --- a/src/resources/extensions/mcp-client/index.ts +++ b/src/resources/extensions/mcp-client/index.ts @@ -11,14 +11,14 @@ * mcp_call — Call a tool on an MCP server (lazy connect) */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { truncateHead, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES, formatSize, -} from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import { Client } from "@modelcontextprotocol/sdk/client"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; diff --git a/src/resources/extensions/ollama/index.ts b/src/resources/extensions/ollama/index.ts index f2af330c8..6a1e6ce12 100644 --- a/src/resources/extensions/ollama/index.ts +++ b/src/resources/extensions/ollama/index.ts @@ -16,7 +16,7 @@ * Respects OLLAMA_HOST env var for non-default endpoints. */ -import { importExtensionModule, type ExtensionAPI } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import * as client from "./ollama-client.js"; import { discoverModels } from "./ollama-discovery.js"; import { registerOllamaCommands } from "./ollama-commands.js"; diff --git a/src/resources/extensions/ollama/ollama-chat-provider.ts b/src/resources/extensions/ollama/ollama-chat-provider.ts index ee16e217d..cb7784143 100644 --- a/src/resources/extensions/ollama/ollama-chat-provider.ts +++ b/src/resources/extensions/ollama/ollama-chat-provider.ts @@ -25,7 +25,7 @@ import { type ToolCall, type Usage, EventStream, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; import { chat } from "./ollama-client.js"; import type { OllamaChatMessage, @@ -405,7 +405,7 @@ function extractMetrics(chunk: OllamaChatResponse): InferenceMetrics | undefined } // ─── Stream lifecycle helpers ─────────────────────────────────────────────── -// Replicated from openai-shared.ts (not exported from "@sf-run/pi-ai) +// Replicated from openai-shared.ts (not exported from "@singularity-forge/pi-ai) function buildInitialOutput(model: Model): AssistantMessage { return { diff --git a/src/resources/extensions/ollama/ollama-commands.ts b/src/resources/extensions/ollama/ollama-commands.ts index 89ae7386c..3096f4080 100644 --- a/src/resources/extensions/ollama/ollama-commands.ts +++ b/src/resources/extensions/ollama/ollama-commands.ts @@ -11,8 +11,8 @@ * /ollama ps — Show running models and resource usage */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import * as client from "./ollama-client.js"; import { discoverModels, formatModelForDisplay } from "./ollama-discovery.js"; import { formatModelSize } from "./model-capabilities.js"; diff --git a/src/resources/extensions/ollama/ollama-tool.ts b/src/resources/extensions/ollama/ollama-tool.ts index b8fa2d60c..8f5c35824 100644 --- a/src/resources/extensions/ollama/ollama-tool.ts +++ b/src/resources/extensions/ollama/ollama-tool.ts @@ -4,8 +4,8 @@ * with the local Ollama instance — list models, pull new ones, check status. */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import * as client from "./ollama-client.js"; import { discoverModels, formatModelForDisplay } from "./ollama-discovery.js"; diff --git a/src/resources/extensions/remote-questions/config.ts b/src/resources/extensions/remote-questions/config.ts index 55cd16fb9..282f71068 100644 --- a/src/resources/extensions/remote-questions/config.ts +++ b/src/resources/extensions/remote-questions/config.ts @@ -2,7 +2,7 @@ * Remote Questions — configuration resolution and validation */ -import { AuthStorage } from "@sf-run/pi-coding-agent"; +import { AuthStorage } from "@singularity-forge/pi-coding-agent"; import { loadEffectiveSFPreferences, type RemoteQuestionsConfig } from "../sf/preferences.js"; import type { RemoteChannel } from "./types.js"; diff --git a/src/resources/extensions/remote-questions/remote-command.ts b/src/resources/extensions/remote-questions/remote-command.ts index 827fc4e3e..365a57fb4 100644 --- a/src/resources/extensions/remote-questions/remote-command.ts +++ b/src/resources/extensions/remote-questions/remote-command.ts @@ -2,9 +2,9 @@ * Remote Questions — /sf remote command */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; -import { AuthStorage } from "@sf-run/pi-coding-agent"; -import { Editor, type EditorTheme, Key, matchesKey, truncateToWidth } from "@sf-run/pi-tui"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; +import { AuthStorage } from "@singularity-forge/pi-coding-agent"; +import { Editor, type EditorTheme, Key, matchesKey, truncateToWidth } from "@singularity-forge/pi-tui"; import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { dirname, join } from "node:path"; import { getGlobalSFPreferencesPath, loadEffectiveSFPreferences } from "../sf/preferences.js"; diff --git a/src/resources/extensions/search-the-web/command-search-provider.ts b/src/resources/extensions/search-the-web/command-search-provider.ts index 04d6e382e..0db6c2579 100644 --- a/src/resources/extensions/search-the-web/command-search-provider.ts +++ b/src/resources/extensions/search-the-web/command-search-provider.ts @@ -8,8 +8,8 @@ * All provider logic lives in provider.ts (S01) — this is pure UI wiring. */ -import type { ExtensionAPI } from '@sf-run/pi-coding-agent' -import type { AutocompleteItem } from '@sf-run/pi-tui' +import type { ExtensionAPI } from '@singularity-forge/pi-coding-agent' +import type { AutocompleteItem } from '@singularity-forge/pi-tui' import { getTavilyApiKey, getBraveApiKey, diff --git a/src/resources/extensions/search-the-web/index.ts b/src/resources/extensions/search-the-web/index.ts index b12db46f6..8edfacb31 100644 --- a/src/resources/extensions/search-the-web/index.ts +++ b/src/resources/extensions/search-the-web/index.ts @@ -5,7 +5,7 @@ * interactive mode so startup is not blocked on the full search tool stack. */ -import { importExtensionModule, type ExtensionAPI } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { registerSearchProviderCommand } from "./command-search-provider.js"; import { registerNativeSearchHooks } from "./native-search.js"; diff --git a/src/resources/extensions/search-the-web/provider.ts b/src/resources/extensions/search-the-web/provider.ts index 418ea2038..42fd6d279 100644 --- a/src/resources/extensions/search-the-web/provider.ts +++ b/src/resources/extensions/search-the-web/provider.ts @@ -10,7 +10,7 @@ * @see S01-RESEARCH.md for the storage decision rationale (D002). */ -import { AuthStorage } from '@sf-run/pi-coding-agent' +import { AuthStorage } from '@singularity-forge/pi-coding-agent' import { homedir } from 'os' import { join } from 'path' import { resolveSearchProviderFromPreferences } from '../sf/preferences.js' diff --git a/src/resources/extensions/search-the-web/tool-fetch-page.ts b/src/resources/extensions/search-the-web/tool-fetch-page.ts index 4074c8543..45ec75607 100644 --- a/src/resources/extensions/search-the-web/tool-fetch-page.ts +++ b/src/resources/extensions/search-the-web/tool-fetch-page.ts @@ -8,9 +8,9 @@ * - Content-type awareness (JSON passthrough, PDF detection) */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { truncateHead, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { truncateHead, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import { LRUTTLCache } from "./cache.js"; diff --git a/src/resources/extensions/search-the-web/tool-llm-context.ts b/src/resources/extensions/search-the-web/tool-llm-context.ts index d6c163d7d..073760375 100644 --- a/src/resources/extensions/search-the-web/tool-llm-context.ts +++ b/src/resources/extensions/search-the-web/tool-llm-context.ts @@ -15,11 +15,11 @@ * Use search-the-web when you want links/URLs to browse selectively. */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { truncateHead, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { truncateHead, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { LRUTTLCache } from "./cache.js"; import { fetchWithRetryTimed, HttpError, classifyError, type RateLimitInfo } from "./http.js"; diff --git a/src/resources/extensions/search-the-web/tool-search.ts b/src/resources/extensions/search-the-web/tool-search.ts index 76a9a7c31..d33bdca0c 100644 --- a/src/resources/extensions/search-the-web/tool-search.ts +++ b/src/resources/extensions/search-the-web/tool-search.ts @@ -10,11 +10,11 @@ * - Rate limit info in details */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { truncateHead, formatSize, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { truncateHead, formatSize, DEFAULT_MAX_BYTES, DEFAULT_MAX_LINES } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { LRUTTLCache } from "./cache.js"; import { fetchWithRetryTimed, fetchWithRetry, classifyError, type RateLimitInfo } from "./http.js"; diff --git a/src/resources/extensions/sf-notify/index.ts b/src/resources/extensions/sf-notify/index.ts index 2cb1ca133..100061728 100644 --- a/src/resources/extensions/sf-notify/index.ts +++ b/src/resources/extensions/sf-notify/index.ts @@ -5,7 +5,7 @@ * while the terminal is backgrounded. */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import * as fs from "node:fs/promises"; import * as os from "node:os"; import * as path from "node:path"; diff --git a/src/resources/extensions/sf-permissions/index.ts b/src/resources/extensions/sf-permissions/index.ts index ecf9fd8a7..2adab3dc1 100644 --- a/src/resources/extensions/sf-permissions/index.ts +++ b/src/resources/extensions/sf-permissions/index.ts @@ -40,7 +40,7 @@ import { exec } from "node:child_process"; import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { type PermissionLevel, type PermissionMode, diff --git a/src/resources/extensions/sf-tui/color-band.ts b/src/resources/extensions/sf-tui/color-band.ts index 03e8fa7be..af8355b88 100644 --- a/src/resources/extensions/sf-tui/color-band.ts +++ b/src/resources/extensions/sf-tui/color-band.ts @@ -4,7 +4,7 @@ * Displays a colored band in the footer to visually distinguish sessions. */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import * as fs from "node:fs"; import * as path from "node:path"; import * as os from "node:os"; diff --git a/src/resources/extensions/sf-tui/emoji.ts b/src/resources/extensions/sf-tui/emoji.ts index 52e8e2908..c0e016385 100644 --- a/src/resources/extensions/sf-tui/emoji.ts +++ b/src/resources/extensions/sf-tui/emoji.ts @@ -5,8 +5,8 @@ * AI-powered selection based on conversation, or random assignment. */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; -import { complete, type UserMessage } from "@sf-run/pi-ai"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import { complete, type UserMessage } from "@singularity-forge/pi-ai"; interface SessionEmojiConfig { enabledByDefault: boolean; diff --git a/src/resources/extensions/sf-tui/footer.ts b/src/resources/extensions/sf-tui/footer.ts index 9722a336b..0033b0251 100644 --- a/src/resources/extensions/sf-tui/footer.ts +++ b/src/resources/extensions/sf-tui/footer.ts @@ -1,5 +1,5 @@ -import type { ExtensionContext, Theme, ReadonlyFooterDataProvider } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import type { ExtensionContext, Theme, ReadonlyFooterDataProvider } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; import { refreshGitStatus } from "./git.js"; import { renderPowerline, renderPowerlineRight, type Segment } from "./powerline.js"; diff --git a/src/resources/extensions/sf-tui/header.ts b/src/resources/extensions/sf-tui/header.ts index 1afa67a0b..bdd543b99 100644 --- a/src/resources/extensions/sf-tui/header.ts +++ b/src/resources/extensions/sf-tui/header.ts @@ -1,5 +1,5 @@ -import type { ExtensionContext, Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth } from "@sf-run/pi-tui"; +import type { ExtensionContext, Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth } from "@singularity-forge/pi-tui"; import { basename } from "node:path"; import { refreshGitStatus } from "./git.js"; diff --git a/src/resources/extensions/sf-tui/index.ts b/src/resources/extensions/sf-tui/index.ts index 082b9fca3..cd88f890e 100644 --- a/src/resources/extensions/sf-tui/index.ts +++ b/src/resources/extensions/sf-tui/index.ts @@ -8,8 +8,8 @@ * - Prompt history stash: Ctrl+Alt+H overlay */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; -import { Key } from "@sf-run/pi-tui"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import { Key } from "@singularity-forge/pi-tui"; import { isAutoActive } from "../sf/auto.js"; import { openStashOverlay, readStash, pushStash, writeStash } from "./stash.js"; import { openMarketplaceOverlay } from "./marketplace.js"; diff --git a/src/resources/extensions/sf-tui/marketplace.ts b/src/resources/extensions/sf-tui/marketplace.ts index b3b34506a..2bc8fb8cc 100644 --- a/src/resources/extensions/sf-tui/marketplace.ts +++ b/src/resources/extensions/sf-tui/marketplace.ts @@ -1,5 +1,5 @@ -import type { ExtensionContext, Theme } from "@sf-run/pi-coding-agent"; -import { visibleWidth, truncateToWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { ExtensionContext, Theme } from "@singularity-forge/pi-coding-agent"; +import { visibleWidth, truncateToWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { existsSync, readdirSync, readFileSync } from "node:fs"; import { join, basename } from "node:path"; import { homedir } from "node:os"; diff --git a/src/resources/extensions/sf-tui/powerline.ts b/src/resources/extensions/sf-tui/powerline.ts index 080ed4b97..875887861 100644 --- a/src/resources/extensions/sf-tui/powerline.ts +++ b/src/resources/extensions/sf-tui/powerline.ts @@ -1,5 +1,5 @@ -import type { Theme } from "@sf-run/pi-coding-agent"; -import { visibleWidth } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { visibleWidth } from "@singularity-forge/pi-tui"; export interface Segment { text: string; diff --git a/src/resources/extensions/sf-tui/shared.ts b/src/resources/extensions/sf-tui/shared.ts index a3ebfbe80..9a8b31410 100644 --- a/src/resources/extensions/sf-tui/shared.ts +++ b/src/resources/extensions/sf-tui/shared.ts @@ -1,4 +1,4 @@ -import { visibleWidth } from "@sf-run/pi-tui"; +import { visibleWidth } from "@singularity-forge/pi-tui"; export function rightAlign(left: string, right: string, width: number): string { const leftVis = visibleWidth(left); diff --git a/src/resources/extensions/sf-tui/stash.ts b/src/resources/extensions/sf-tui/stash.ts index 4018f584d..06d73e1c0 100644 --- a/src/resources/extensions/sf-tui/stash.ts +++ b/src/resources/extensions/sf-tui/stash.ts @@ -1,5 +1,5 @@ -import type { ExtensionContext, Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { ExtensionContext, Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { join, dirname } from "node:path"; import { homedir } from "node:os"; diff --git a/src/resources/extensions/sf-tui/welcome.ts b/src/resources/extensions/sf-tui/welcome.ts index add16052a..4415a1317 100644 --- a/src/resources/extensions/sf-tui/welcome.ts +++ b/src/resources/extensions/sf-tui/welcome.ts @@ -1,5 +1,5 @@ -import type { ExtensionContext, Theme } from "@sf-run/pi-coding-agent"; -import { visibleWidth, truncateToWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { ExtensionContext, Theme } from "@singularity-forge/pi-coding-agent"; +import { visibleWidth, truncateToWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { refreshGitStatus } from "./git.js"; const LOGO_LINES = [ diff --git a/src/resources/extensions/sf-usage-bar/index.ts b/src/resources/extensions/sf-usage-bar/index.ts index 67c8248b4..4a2204c8d 100644 --- a/src/resources/extensions/sf-usage-bar/index.ts +++ b/src/resources/extensions/sf-usage-bar/index.ts @@ -8,8 +8,8 @@ * - Reset countdowns */ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { visibleWidth } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { visibleWidth } from "@singularity-forge/pi-tui"; import * as fs from "node:fs"; import * as path from "node:path"; import * as os from "node:os"; diff --git a/src/resources/extensions/sf/activity-log.ts b/src/resources/extensions/sf/activity-log.ts index a2f7615ff..dbe40cb53 100644 --- a/src/resources/extensions/sf/activity-log.ts +++ b/src/resources/extensions/sf/activity-log.ts @@ -14,7 +14,7 @@ import { join } from "node:path"; import { SFError, SF_IO_ERROR } from "./errors.js"; const SEQ_PREFIX_RE = /^(\d+)-/; -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { sfRoot } from "./paths.js"; import { buildAuditEnvelope, emitUokAuditEvent } from "./uok/audit.js"; import { isAuditEnvelopeEnabled } from "./uok/audit-toggle.js"; diff --git a/src/resources/extensions/sf/auto-dashboard.ts b/src/resources/extensions/sf/auto-dashboard.ts index a52c45666..366eeddfc 100644 --- a/src/resources/extensions/sf/auto-dashboard.ts +++ b/src/resources/extensions/sf/auto-dashboard.ts @@ -12,7 +12,7 @@ import type { SessionMessageEntry, ReadonlyFooterDataProvider, Theme, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import type { SFState } from "./types.js"; import { getCurrentBranch } from "./worktree.js"; import { getActiveHook } from "./post-unit-hooks.js"; @@ -25,7 +25,7 @@ import { import { isDbAvailable, getMilestoneSlices, getSliceTasks } from "./sf-db.js"; import { readFileSync, writeFileSync, existsSync } from "node:fs"; import { execFileSync } from "node:child_process"; -import { truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import { truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; import { makeUI } from "../shared/tui.js"; import { GLYPH, INDENT } from "../shared/mod.js"; import { computeProgressScore } from "./progress-score.js"; diff --git a/src/resources/extensions/sf/auto-direct-dispatch.ts b/src/resources/extensions/sf/auto-direct-dispatch.ts index 042353913..e71193ac1 100644 --- a/src/resources/extensions/sf/auto-direct-dispatch.ts +++ b/src/resources/extensions/sf/auto-direct-dispatch.ts @@ -6,7 +6,7 @@ import type { ExtensionAPI, ExtensionCommandContext, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { deriveState } from "./state.js"; import { loadFile } from "./files.js"; diff --git a/src/resources/extensions/sf/auto-model-selection.ts b/src/resources/extensions/sf/auto-model-selection.ts index dd400c8bf..2e96f7ce8 100644 --- a/src/resources/extensions/sf/auto-model-selection.ts +++ b/src/resources/extensions/sf/auto-model-selection.ts @@ -4,9 +4,9 @@ * and fallback chains. */ -import type { Api, Model } from "@sf-run/pi-ai"; -import { getProviderCapabilities } from "@sf-run/pi-ai"; -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { Api, Model } from "@singularity-forge/pi-ai"; +import { getProviderCapabilities } from "@singularity-forge/pi-ai"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import type { SFPreferences } from "./preferences.js"; import { resolveModelWithFallbacksForUnit, resolveDynamicRoutingConfig, resolvePersistModelChanges } from "./preferences.js"; import type { ComplexityTier } from "./complexity-classifier.js"; diff --git a/src/resources/extensions/sf/auto-post-unit.ts b/src/resources/extensions/sf/auto-post-unit.ts index f2de6e145..4de9cd4e0 100644 --- a/src/resources/extensions/sf/auto-post-unit.ts +++ b/src/resources/extensions/sf/auto-post-unit.ts @@ -11,7 +11,7 @@ * Extracted from handleAgentEnd() in auto.ts. */ -import type { ExtensionContext, ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext, ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { deriveState } from "./state.js"; import { logWarning, logError } from "./workflow-logger.js"; import { loadFile, parseSummary, resolveAllOverrides } from "./files.js"; diff --git a/src/resources/extensions/sf/auto-prompts.ts b/src/resources/extensions/sf/auto-prompts.ts index 96333911c..b55d743fd 100644 --- a/src/resources/extensions/sf/auto-prompts.ts +++ b/src/resources/extensions/sf/auto-prompts.ts @@ -20,7 +20,7 @@ import { resolveSkillDiscoveryMode, resolveInlineLevel, loadEffectiveSFPreferenc import { parseRoadmap } from "./parsers-legacy.js"; import type { SFState, InlineLevel } from "./types.js"; import type { SFPreferences } from "./preferences.js"; -import { getLoadedSkills, type Skill } from "@sf-run/pi-coding-agent"; +import { getLoadedSkills, type Skill } from "@singularity-forge/pi-coding-agent"; import { join, basename } from "node:path"; import { existsSync } from "node:fs"; import { computeBudgets, resolveExecutorContextWindow, truncateAtSectionBoundary } from "./context-budget.js"; diff --git a/src/resources/extensions/sf/auto-recovery.ts b/src/resources/extensions/sf/auto-recovery.ts index 6879782fd..d2d5b7ecb 100644 --- a/src/resources/extensions/sf/auto-recovery.ts +++ b/src/resources/extensions/sf/auto-recovery.ts @@ -7,7 +7,7 @@ * globals or AutoContext dependency. */ -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { parseUnitId } from "./unit-id.js"; import { appendEvent } from "./workflow-events.js"; import { atomicWriteSync } from "./atomic-write.js"; diff --git a/src/resources/extensions/sf/auto-start.ts b/src/resources/extensions/sf/auto-start.ts index 8ef35b6fc..fa455bb16 100644 --- a/src/resources/extensions/sf/auto-start.ts +++ b/src/resources/extensions/sf/auto-start.ts @@ -12,7 +12,7 @@ import type { ExtensionAPI, ExtensionCommandContext, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { deriveState } from "./state.js"; import { loadFile, getManifestStatus } from "./files.js"; import type { InterruptedSessionAssessment } from "./interrupted-session.js"; diff --git a/src/resources/extensions/sf/auto-timeout-recovery.ts b/src/resources/extensions/sf/auto-timeout-recovery.ts index 89876b2d0..9d074947f 100644 --- a/src/resources/extensions/sf/auto-timeout-recovery.ts +++ b/src/resources/extensions/sf/auto-timeout-recovery.ts @@ -4,7 +4,7 @@ * and blocker placeholder generation. */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { readUnitRuntimeRecord, writeUnitRuntimeRecord, diff --git a/src/resources/extensions/sf/auto-timers.ts b/src/resources/extensions/sf/auto-timers.ts index 59141e0b0..1ad6b1983 100644 --- a/src/resources/extensions/sf/auto-timers.ts +++ b/src/resources/extensions/sf/auto-timers.ts @@ -6,7 +6,7 @@ * via startUnitSupervision() and torn down by the caller via clearUnitTimeout(). */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { readUnitRuntimeRecord, writeUnitRuntimeRecord } from "./unit-runtime.js"; import { isDbAvailable, getMilestoneSlices, getSliceTasks } from "./sf-db.js"; import { resolveAutoSupervisorConfig } from "./preferences.js"; diff --git a/src/resources/extensions/sf/auto-unit-closeout.ts b/src/resources/extensions/sf/auto-unit-closeout.ts index 5e54480a9..9edd79c9e 100644 --- a/src/resources/extensions/sf/auto-unit-closeout.ts +++ b/src/resources/extensions/sf/auto-unit-closeout.ts @@ -4,7 +4,7 @@ * that appears 6+ times in auto.ts. */ -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { snapshotUnitMetrics } from "./metrics.js"; import { saveActivityLog } from "./activity-log.js"; import { logWarning } from "./workflow-logger.js"; diff --git a/src/resources/extensions/sf/auto-verification.ts b/src/resources/extensions/sf/auto-verification.ts index ec53957e0..782f126eb 100644 --- a/src/resources/extensions/sf/auto-verification.ts +++ b/src/resources/extensions/sf/auto-verification.ts @@ -10,7 +10,7 @@ * checks the result and handles control flow. */ -import type { ExtensionContext, ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext, ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { mkdirSync, writeFileSync } from "node:fs"; import { resolveSliceFile, resolveSlicePath, resolveMilestoneFile } from "./paths.js"; import { parseUnitId } from "./unit-id.js"; diff --git a/src/resources/extensions/sf/auto.ts b/src/resources/extensions/sf/auto.ts index 41ccd815f..7f6aecc8c 100644 --- a/src/resources/extensions/sf/auto.ts +++ b/src/resources/extensions/sf/auto.ts @@ -14,7 +14,7 @@ import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { deriveState } from "./state.js"; import { parseUnitId } from "./unit-id.js"; diff --git a/src/resources/extensions/sf/auto/loop-deps.ts b/src/resources/extensions/sf/auto/loop-deps.ts index aa8d77dde..2d69f6a88 100644 --- a/src/resources/extensions/sf/auto/loop-deps.ts +++ b/src/resources/extensions/sf/auto/loop-deps.ts @@ -4,7 +4,7 @@ * Leaf node in the import DAG (type-only). */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import type { AutoSession } from "./session.js"; import type { SFPreferences } from "../preferences.js"; diff --git a/src/resources/extensions/sf/auto/loop.ts b/src/resources/extensions/sf/auto/loop.ts index 1949573bf..6ae953250 100644 --- a/src/resources/extensions/sf/auto/loop.ts +++ b/src/resources/extensions/sf/auto/loop.ts @@ -7,7 +7,7 @@ * Imports from: auto/types, auto/resolve, auto/phases */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { randomUUID } from "node:crypto"; import type { AutoSession, SidecarItem } from "./session.js"; diff --git a/src/resources/extensions/sf/auto/phases.ts b/src/resources/extensions/sf/auto/phases.ts index 9088b5f20..ec24a0342 100644 --- a/src/resources/extensions/sf/auto/phases.ts +++ b/src/resources/extensions/sf/auto/phases.ts @@ -7,7 +7,7 @@ * Imports from: auto/types, auto/detect-stuck, auto/run-unit, auto/loop-deps */ -import { importExtensionModule, type ExtensionAPI, type ExtensionContext } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI, type ExtensionContext } from "@singularity-forge/pi-coding-agent"; import type { AutoSession, SidecarItem } from "./session.js"; import type { LoopDeps } from "./loop-deps.js"; diff --git a/src/resources/extensions/sf/auto/run-unit.ts b/src/resources/extensions/sf/auto/run-unit.ts index cd388cb42..9e7a4b13c 100644 --- a/src/resources/extensions/sf/auto/run-unit.ts +++ b/src/resources/extensions/sf/auto/run-unit.ts @@ -4,7 +4,7 @@ * Imports from: auto/types, auto/resolve */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import type { AutoSession } from "./session.js"; import { NEW_SESSION_TIMEOUT_MS } from "./session.js"; diff --git a/src/resources/extensions/sf/auto/session.ts b/src/resources/extensions/sf/auto/session.ts index 5a34ed312..ac4ed1aac 100644 --- a/src/resources/extensions/sf/auto/session.ts +++ b/src/resources/extensions/sf/auto/session.ts @@ -16,8 +16,8 @@ * `let` or `var` declarations. */ -import type { Api, Model } from "@sf-run/pi-ai"; -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { Api, Model } from "@singularity-forge/pi-ai"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import type { GitServiceImpl } from "../git-service.js"; import type { CaptureEntry } from "../captures.js"; import type { BudgetAlertLevel } from "../auto-budget.js"; diff --git a/src/resources/extensions/sf/auto/types.ts b/src/resources/extensions/sf/auto/types.ts index b9a2b9023..dc81e8e96 100644 --- a/src/resources/extensions/sf/auto/types.ts +++ b/src/resources/extensions/sf/auto/types.ts @@ -4,7 +4,7 @@ * Leaf node in the import DAG — no imports from auto/. */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import type { AutoSession } from "./session.js"; import type { SFPreferences } from "../preferences.js"; diff --git a/src/resources/extensions/sf/bootstrap/agent-end-recovery.ts b/src/resources/extensions/sf/bootstrap/agent-end-recovery.ts index b54337a1b..b23799694 100644 --- a/src/resources/extensions/sf/bootstrap/agent-end-recovery.ts +++ b/src/resources/extensions/sf/bootstrap/agent-end-recovery.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { logWarning } from "../workflow-logger.js"; import { checkAutoStartAfterDiscuss } from "../guided-flow.js"; diff --git a/src/resources/extensions/sf/bootstrap/db-tools.ts b/src/resources/extensions/sf/bootstrap/db-tools.ts index f64eb268c..b8ba1f38a 100644 --- a/src/resources/extensions/sf/bootstrap/db-tools.ts +++ b/src/resources/extensions/sf/bootstrap/db-tools.ts @@ -1,11 +1,11 @@ import { Type } from "@sinclair/typebox"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { Text } from "@sf-run/pi-tui"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { Text } from "@singularity-forge/pi-tui"; import { findMilestoneIds, nextMilestoneId, claimReservedId, getReservedMilestoneIds } from "../guided-flow.js"; import { loadEffectiveSFPreferences } from "../preferences.js"; import { ensureDbOpen } from "./dynamic-tools.js"; -import { StringEnum } from "@sf-run/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; import { logError } from "../workflow-logger.js"; import { getErrorMessage } from "../error-utils.js"; import { diff --git a/src/resources/extensions/sf/bootstrap/dynamic-tools.ts b/src/resources/extensions/sf/bootstrap/dynamic-tools.ts index e6753abce..5ea94e0b5 100644 --- a/src/resources/extensions/sf/bootstrap/dynamic-tools.ts +++ b/src/resources/extensions/sf/bootstrap/dynamic-tools.ts @@ -1,8 +1,8 @@ import { existsSync } from "node:fs"; import { join, sep } from "node:path"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; -import { createBashTool, createEditTool, createReadTool, createWriteTool } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; +import { createBashTool, createEditTool, createReadTool, createWriteTool } from "@singularity-forge/pi-coding-agent"; import { DEFAULT_BASH_TIMEOUT_SECS } from "../constants.js"; import { setLogBasePath, logWarning } from "../workflow-logger.js"; diff --git a/src/resources/extensions/sf/bootstrap/journal-tools.ts b/src/resources/extensions/sf/bootstrap/journal-tools.ts index e8eb4fbff..e05f545e4 100644 --- a/src/resources/extensions/sf/bootstrap/journal-tools.ts +++ b/src/resources/extensions/sf/bootstrap/journal-tools.ts @@ -1,5 +1,5 @@ import { Type } from "@sinclair/typebox"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { queryJournal } from "../journal.js"; import { logWarning } from "../workflow-logger.js"; diff --git a/src/resources/extensions/sf/bootstrap/notify-interceptor.ts b/src/resources/extensions/sf/bootstrap/notify-interceptor.ts index 30df765c9..608268be1 100644 --- a/src/resources/extensions/sf/bootstrap/notify-interceptor.ts +++ b/src/resources/extensions/sf/bootstrap/notify-interceptor.ts @@ -3,7 +3,7 @@ // notification store. Uses a WeakSet to prevent double-wrapping and handle // UI context replacement on /reload gracefully. -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { appendNotification, type NotifySeverity } from "../notification-store.js"; diff --git a/src/resources/extensions/sf/bootstrap/provider-error-resume.ts b/src/resources/extensions/sf/bootstrap/provider-error-resume.ts index 213554d5a..18c13fe25 100644 --- a/src/resources/extensions/sf/bootstrap/provider-error-resume.ts +++ b/src/resources/extensions/sf/bootstrap/provider-error-resume.ts @@ -2,7 +2,7 @@ import type { ExtensionAPI, ExtensionCommandContext, ExtensionContext, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { getAutoDashboardData, startAuto, type AutoDashboardData } from "../auto.js"; import { resetTransientRetryState } from "./agent-end-recovery.js"; diff --git a/src/resources/extensions/sf/bootstrap/query-tools.ts b/src/resources/extensions/sf/bootstrap/query-tools.ts index 5c86ea06e..bc6266f61 100644 --- a/src/resources/extensions/sf/bootstrap/query-tools.ts +++ b/src/resources/extensions/sf/bootstrap/query-tools.ts @@ -1,7 +1,7 @@ // SF2 — Read-only query tools exposing DB state to the LLM via the WAL connection import { Type } from "@sinclair/typebox"; -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { ensureDbOpen } from "./dynamic-tools.js"; import { executeMilestoneStatus } from "../tools/workflow-tool-executors.js"; diff --git a/src/resources/extensions/sf/bootstrap/register-extension.ts b/src/resources/extensions/sf/bootstrap/register-extension.ts index f73644b67..c5f42904e 100644 --- a/src/resources/extensions/sf/bootstrap/register-extension.ts +++ b/src/resources/extensions/sf/bootstrap/register-extension.ts @@ -1,6 +1,6 @@ // SF2 — Extension registration: wires all SF tools, commands, and hooks into pi -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { registerExitCommand } from "../exit-command.js"; import { registerWorktreeCommand } from "../worktree-command.js"; diff --git a/src/resources/extensions/sf/bootstrap/register-hooks.ts b/src/resources/extensions/sf/bootstrap/register-hooks.ts index e99a02afc..25f587d97 100644 --- a/src/resources/extensions/sf/bootstrap/register-hooks.ts +++ b/src/resources/extensions/sf/bootstrap/register-hooks.ts @@ -1,7 +1,7 @@ import { join } from "node:path"; -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; -import { isToolCallEventType } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import { isToolCallEventType } from "@singularity-forge/pi-coding-agent"; import { buildMilestoneFileName, resolveMilestonePath, resolveSliceFile, resolveSlicePath } from "../paths.js"; import { buildBeforeAgentStartResult } from "./system-context.js"; diff --git a/src/resources/extensions/sf/bootstrap/register-shortcuts.ts b/src/resources/extensions/sf/bootstrap/register-shortcuts.ts index a711c46c4..10e07cdba 100644 --- a/src/resources/extensions/sf/bootstrap/register-shortcuts.ts +++ b/src/resources/extensions/sf/bootstrap/register-shortcuts.ts @@ -1,8 +1,8 @@ import { existsSync } from "node:fs"; import { join } from "node:path"; -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; -import { Key } from "@sf-run/pi-tui"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import { Key } from "@singularity-forge/pi-tui"; import { SFDashboardOverlay } from "../dashboard-overlay.js"; import { SFNotificationOverlay } from "../notification-overlay.js"; diff --git a/src/resources/extensions/sf/bootstrap/system-context.ts b/src/resources/extensions/sf/bootstrap/system-context.ts index daf6d4026..0284fe996 100644 --- a/src/resources/extensions/sf/bootstrap/system-context.ts +++ b/src/resources/extensions/sf/bootstrap/system-context.ts @@ -2,7 +2,7 @@ import { existsSync, readFileSync, unlinkSync } from "node:fs"; import { homedir } from "node:os"; import { join } from "node:path"; -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { logWarning } from "../workflow-logger.js"; import { debugTime } from "../debug-logger.js"; diff --git a/src/resources/extensions/sf/changelog.ts b/src/resources/extensions/sf/changelog.ts index 1dd4d9618..4bddd865e 100644 --- a/src/resources/extensions/sf/changelog.ts +++ b/src/resources/extensions/sf/changelog.ts @@ -8,7 +8,7 @@ * Entry point: handleChangelog() called from commands.ts */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; // ─── Types ──────────────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/sf/claude-import.ts b/src/resources/extensions/sf/claude-import.ts index bf8b8787c..a0e1c5caf 100644 --- a/src/resources/extensions/sf/claude-import.ts +++ b/src/resources/extensions/sf/claude-import.ts @@ -1,5 +1,5 @@ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; -import { SettingsManager, getAgentDir } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; +import { SettingsManager, getAgentDir } from "@singularity-forge/pi-coding-agent"; import { existsSync, readdirSync, readFileSync } from "node:fs"; import { basename, dirname, join, relative, resolve } from "node:path"; import { homedir } from "node:os"; diff --git a/src/resources/extensions/sf/commands-add-tests.ts b/src/resources/extensions/sf/commands-add-tests.ts index 233f38728..2bf3235d4 100644 --- a/src/resources/extensions/sf/commands-add-tests.ts +++ b/src/resources/extensions/sf/commands-add-tests.ts @@ -5,7 +5,7 @@ * with implementation context (summaries, changed files, test patterns). */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync, readdirSync } from "node:fs"; import { join } from "node:path"; diff --git a/src/resources/extensions/sf/commands-backlog.ts b/src/resources/extensions/sf/commands-backlog.ts index e46edf25c..ddb9214a6 100644 --- a/src/resources/extensions/sf/commands-backlog.ts +++ b/src/resources/extensions/sf/commands-backlog.ts @@ -6,7 +6,7 @@ * Items can be promoted to active slices via add-slice. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync, writeFileSync, mkdirSync } from "node:fs"; import { join, dirname } from "node:path"; diff --git a/src/resources/extensions/sf/commands-bootstrap.ts b/src/resources/extensions/sf/commands-bootstrap.ts index 1240294d9..ffbd531b8 100644 --- a/src/resources/extensions/sf/commands-bootstrap.ts +++ b/src/resources/extensions/sf/commands-bootstrap.ts @@ -1,4 +1,4 @@ -import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; const TOP_LEVEL_SUBCOMMANDS = [ { cmd: "help", desc: "Categorized command reference with descriptions" }, diff --git a/src/resources/extensions/sf/commands-cmux.ts b/src/resources/extensions/sf/commands-cmux.ts index d392d677d..60dce9f0f 100644 --- a/src/resources/extensions/sf/commands-cmux.ts +++ b/src/resources/extensions/sf/commands-cmux.ts @@ -1,4 +1,4 @@ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync, writeFileSync } from "node:fs"; import { clearCmuxSidebar, CmuxClient, detectCmuxEnvironment, resolveCmuxConfig } from "../cmux/index.js"; import { saveFile } from "./files.js"; diff --git a/src/resources/extensions/sf/commands-codebase.ts b/src/resources/extensions/sf/commands-codebase.ts index e31e178a0..62469824a 100644 --- a/src/resources/extensions/sf/commands-codebase.ts +++ b/src/resources/extensions/sf/commands-codebase.ts @@ -5,7 +5,7 @@ * Subcommands: generate, update, stats, help */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { generateCodebaseMap, diff --git a/src/resources/extensions/sf/commands-config.ts b/src/resources/extensions/sf/commands-config.ts index c6695df95..8aae3ad63 100644 --- a/src/resources/extensions/sf/commands-config.ts +++ b/src/resources/extensions/sf/commands-config.ts @@ -4,8 +4,8 @@ * Contains: TOOL_KEYS, loadToolApiKeys, getConfigAuthStorage, handleConfig */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; -import { AuthStorage } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; +import { AuthStorage } from "@singularity-forge/pi-coding-agent"; import { existsSync, mkdirSync } from "node:fs"; import { join, dirname } from "node:path"; diff --git a/src/resources/extensions/sf/commands-do.ts b/src/resources/extensions/sf/commands-do.ts index 786092815..fabcf7a40 100644 --- a/src/resources/extensions/sf/commands-do.ts +++ b/src/resources/extensions/sf/commands-do.ts @@ -5,7 +5,7 @@ * using keyword matching. Falls back to /sf quick for task-like input. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; interface Route { keywords: string[]; diff --git a/src/resources/extensions/sf/commands-extensions.ts b/src/resources/extensions/sf/commands-extensions.ts index eb56d00c4..8ff174024 100644 --- a/src/resources/extensions/sf/commands-extensions.ts +++ b/src/resources/extensions/sf/commands-extensions.ts @@ -6,7 +6,7 @@ * via jiti at runtime from ~/.sf/agent/, not compiled by tsc). */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, mkdirSync, readFileSync, readdirSync, renameSync, writeFileSync } from "node:fs"; import { dirname, join } from "node:path"; import { homedir } from "node:os"; diff --git a/src/resources/extensions/sf/commands-extract-learnings.ts b/src/resources/extensions/sf/commands-extract-learnings.ts index 5a500e1da..a6c1f0eb7 100644 --- a/src/resources/extensions/sf/commands-extract-learnings.ts +++ b/src/resources/extensions/sf/commands-extract-learnings.ts @@ -6,7 +6,7 @@ * Decisions · Lessons · Patterns · Surprises */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync } from "node:fs"; import { join, basename } from "node:path"; diff --git a/src/resources/extensions/sf/commands-handlers.ts b/src/resources/extensions/sf/commands-handlers.ts index 69e2ae5ec..470ff60f3 100644 --- a/src/resources/extensions/sf/commands-handlers.ts +++ b/src/resources/extensions/sf/commands-handlers.ts @@ -5,7 +5,7 @@ * handleRunHook, handleUpdate, handleSkillHealth */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync, mkdirSync } from "node:fs"; import { join } from "node:path"; import { deriveState } from "./state.js"; diff --git a/src/resources/extensions/sf/commands-inspect.ts b/src/resources/extensions/sf/commands-inspect.ts index b3eaebeb3..713be95b3 100644 --- a/src/resources/extensions/sf/commands-inspect.ts +++ b/src/resources/extensions/sf/commands-inspect.ts @@ -4,7 +4,7 @@ * Contains: InspectData type, formatInspectOutput, handleInspect */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync } from "node:fs"; import { join } from "node:path"; import { sfRoot } from "./paths.js"; diff --git a/src/resources/extensions/sf/commands-logs.ts b/src/resources/extensions/sf/commands-logs.ts index d8c10170e..03e26a108 100644 --- a/src/resources/extensions/sf/commands-logs.ts +++ b/src/resources/extensions/sf/commands-logs.ts @@ -10,7 +10,7 @@ * /sf logs clear — Remove old activity and debug logs */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readdirSync, readFileSync, statSync, unlinkSync } from "node:fs"; import { join } from "node:path"; import { sfRoot } from "./paths.js"; diff --git a/src/resources/extensions/sf/commands-maintenance.ts b/src/resources/extensions/sf/commands-maintenance.ts index 3a41b5ebc..23c8486ac 100644 --- a/src/resources/extensions/sf/commands-maintenance.ts +++ b/src/resources/extensions/sf/commands-maintenance.ts @@ -4,7 +4,7 @@ * Contains: handleCleanupBranches, handleCleanupSnapshots, handleCleanupWorktrees, handleSkip, handleDryRun, handleRecover */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { deriveState } from "./state.js"; import { nativeBranchList, nativeDetectMainBranch, nativeBranchListMerged, nativeBranchDelete, nativeForEachRef, nativeUpdateRef } from "./native-git-bridge.js"; import { logWarning } from "./workflow-logger.js"; diff --git a/src/resources/extensions/sf/commands-mcp-status.ts b/src/resources/extensions/sf/commands-mcp-status.ts index 01383eb95..40e4658df 100644 --- a/src/resources/extensions/sf/commands-mcp-status.ts +++ b/src/resources/extensions/sf/commands-mcp-status.ts @@ -10,7 +10,7 @@ * /sf mcp init [dir] — Write project-local SF workflow MCP config */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync } from "node:fs"; import { join, resolve } from "node:path"; diff --git a/src/resources/extensions/sf/commands-pr-branch.ts b/src/resources/extensions/sf/commands-pr-branch.ts index a11e12e89..46583e755 100644 --- a/src/resources/extensions/sf/commands-pr-branch.ts +++ b/src/resources/extensions/sf/commands-pr-branch.ts @@ -6,7 +6,7 @@ * upstream PRs where planning artifacts should not be included. */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { execFileSync } from "node:child_process"; diff --git a/src/resources/extensions/sf/commands-prefs-wizard.ts b/src/resources/extensions/sf/commands-prefs-wizard.ts index ee1a5f436..03e46a6c7 100644 --- a/src/resources/extensions/sf/commands-prefs-wizard.ts +++ b/src/resources/extensions/sf/commands-prefs-wizard.ts @@ -6,7 +6,7 @@ * handlePrefsMode, handleImportClaude, handlePrefs */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync } from "node:fs"; import { join, dirname } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/src/resources/extensions/sf/commands-rate.ts b/src/resources/extensions/sf/commands-rate.ts index d27666fc5..135e0326f 100644 --- a/src/resources/extensions/sf/commands-rate.ts +++ b/src/resources/extensions/sf/commands-rate.ts @@ -3,7 +3,7 @@ * Feeds into the adaptive routing history so future dispatches improve. */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { loadLedgerFromDisk } from "./metrics.js"; import { recordFeedback, initRoutingHistory } from "./routing-history.js"; import type { ComplexityTier } from "./complexity-classifier.js"; diff --git a/src/resources/extensions/sf/commands-session-report.ts b/src/resources/extensions/sf/commands-session-report.ts index 1e622fc85..91e3df0ca 100644 --- a/src/resources/extensions/sf/commands-session-report.ts +++ b/src/resources/extensions/sf/commands-session-report.ts @@ -5,7 +5,7 @@ * duration, model usage breakdown. */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { mkdirSync, writeFileSync } from "node:fs"; import { join } from "node:path"; diff --git a/src/resources/extensions/sf/commands-ship.ts b/src/resources/extensions/sf/commands-ship.ts index 09fc51dc7..4bbc9c991 100644 --- a/src/resources/extensions/sf/commands-ship.ts +++ b/src/resources/extensions/sf/commands-ship.ts @@ -5,7 +5,7 @@ * roadmap, slice summaries, and metrics, then opens via `gh pr create`. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { execFileSync } from "node:child_process"; import { existsSync, readFileSync, readdirSync } from "node:fs"; diff --git a/src/resources/extensions/sf/commands-workflow-templates.ts b/src/resources/extensions/sf/commands-workflow-templates.ts index d80375629..f5990771b 100644 --- a/src/resources/extensions/sf/commands-workflow-templates.ts +++ b/src/resources/extensions/sf/commands-workflow-templates.ts @@ -5,7 +5,7 @@ * Resolves templates by name or auto-detection, then dispatches the workflow prompt. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { diff --git a/src/resources/extensions/sf/commands/context.ts b/src/resources/extensions/sf/commands/context.ts index 105405821..44cd334e2 100644 --- a/src/resources/extensions/sf/commands/context.ts +++ b/src/resources/extensions/sf/commands/context.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { checkRemoteAutoSession, isAutoActive, isAutoPaused, stopAutoRemote } from "../auto.js"; import { validateDirectory } from "../validate-directory.js"; diff --git a/src/resources/extensions/sf/commands/dispatcher.ts b/src/resources/extensions/sf/commands/dispatcher.ts index 3ffdf4259..0d15658bf 100644 --- a/src/resources/extensions/sf/commands/dispatcher.ts +++ b/src/resources/extensions/sf/commands/dispatcher.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { SFNoProjectError } from "./context.js"; import { handleAutoCommand } from "./handlers/auto.js"; diff --git a/src/resources/extensions/sf/commands/handlers/auto.ts b/src/resources/extensions/sf/commands/handlers/auto.ts index 8f4508fe1..f79fec90a 100644 --- a/src/resources/extensions/sf/commands/handlers/auto.ts +++ b/src/resources/extensions/sf/commands/handlers/auto.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync } from "node:fs"; import { resolve } from "node:path"; diff --git a/src/resources/extensions/sf/commands/handlers/core.ts b/src/resources/extensions/sf/commands/handlers/core.ts index e09486cd5..986940393 100644 --- a/src/resources/extensions/sf/commands/handlers/core.ts +++ b/src/resources/extensions/sf/commands/handlers/core.ts @@ -1,5 +1,5 @@ -import type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from "@sf-run/pi-coding-agent"; -import type { Model } from "@sf-run/pi-ai"; +import type { ExtensionAPI, ExtensionCommandContext, ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import type { Model } from "@singularity-forge/pi-ai"; import type { SFState } from "../../types.js"; import { computeProgressScore, formatProgressLine } from "../../progress-score.js"; diff --git a/src/resources/extensions/sf/commands/handlers/notifications-handler.ts b/src/resources/extensions/sf/commands/handlers/notifications-handler.ts index 763c7feae..18bd99940 100644 --- a/src/resources/extensions/sf/commands/handlers/notifications-handler.ts +++ b/src/resources/extensions/sf/commands/handlers/notifications-handler.ts @@ -1,7 +1,7 @@ // SF Extension — /sf notifications Command Handler // View, filter, and clear the persistent notification history. -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { readNotifications, diff --git a/src/resources/extensions/sf/commands/handlers/ops.ts b/src/resources/extensions/sf/commands/handlers/ops.ts index cf9a9fc20..2b4f88dba 100644 --- a/src/resources/extensions/sf/commands/handlers/ops.ts +++ b/src/resources/extensions/sf/commands/handlers/ops.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { enableDebug } from "../../debug-logger.js"; import { dispatchDirectPhase } from "../../auto-direct-dispatch.js"; diff --git a/src/resources/extensions/sf/commands/handlers/parallel.ts b/src/resources/extensions/sf/commands/handlers/parallel.ts index 752d64663..f52acce43 100644 --- a/src/resources/extensions/sf/commands/handlers/parallel.ts +++ b/src/resources/extensions/sf/commands/handlers/parallel.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { getOrchestratorState, diff --git a/src/resources/extensions/sf/commands/handlers/workflow.ts b/src/resources/extensions/sf/commands/handlers/workflow.ts index 19342a943..b7b1422f3 100644 --- a/src/resources/extensions/sf/commands/handlers/workflow.ts +++ b/src/resources/extensions/sf/commands/handlers/workflow.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync, unlinkSync } from "node:fs"; import { join } from "node:path"; diff --git a/src/resources/extensions/sf/commands/index.ts b/src/resources/extensions/sf/commands/index.ts index 1ab03aa2c..6e6b9aee8 100644 --- a/src/resources/extensions/sf/commands/index.ts +++ b/src/resources/extensions/sf/commands/index.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { SF_COMMAND_DESCRIPTION, getGsdArgumentCompletions } from "./catalog.js"; diff --git a/src/resources/extensions/sf/config-overlay.ts b/src/resources/extensions/sf/config-overlay.ts index 12863d494..abbe1194e 100644 --- a/src/resources/extensions/sf/config-overlay.ts +++ b/src/resources/extensions/sf/config-overlay.ts @@ -7,8 +7,8 @@ * Opened via `/sf show-config` or `/sf config`. */ -import type { Theme } from "@sf-run/pi-coding-agent"; -import { matchesKey, Key, truncateToWidth } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { matchesKey, Key, truncateToWidth } from "@singularity-forge/pi-tui"; import { loadEffectiveSFPreferences, diff --git a/src/resources/extensions/sf/dashboard-overlay.ts b/src/resources/extensions/sf/dashboard-overlay.ts index f60b61bb7..794c25e19 100644 --- a/src/resources/extensions/sf/dashboard-overlay.ts +++ b/src/resources/extensions/sf/dashboard-overlay.ts @@ -7,8 +7,8 @@ * or opened from /sf status. */ -import type { Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { deriveState } from "./state.js"; import { loadFile } from "./files.js"; import { isDbAvailable, getMilestoneSlices, getSliceTasks } from "./sf-db.js"; diff --git a/src/resources/extensions/sf/doctor-providers.ts b/src/resources/extensions/sf/doctor-providers.ts index 086742e80..9283350f3 100644 --- a/src/resources/extensions/sf/doctor-providers.ts +++ b/src/resources/extensions/sf/doctor-providers.ts @@ -13,8 +13,8 @@ import { existsSync } from "node:fs"; import { join } from "node:path"; -import { AuthStorage } from "@sf-run/pi-coding-agent"; -import { getEnvApiKey } from "@sf-run/pi-ai"; +import { AuthStorage } from "@singularity-forge/pi-coding-agent"; +import { getEnvApiKey } from "@singularity-forge/pi-ai"; import { loadEffectiveSFPreferences } from "./preferences.js"; import { getAuthPath, PROVIDER_REGISTRY, type ProviderCategory } from "./key-manager.js"; diff --git a/src/resources/extensions/sf/env-utils.ts b/src/resources/extensions/sf/env-utils.ts index 06f69a8d5..520447141 100644 --- a/src/resources/extensions/sf/env-utils.ts +++ b/src/resources/extensions/sf/env-utils.ts @@ -2,7 +2,7 @@ // Copyright (c) 2026 Jeremy McSpadden // // Pure utility for checking existing env keys in .env files and process.env. -// Extracted from get-secrets-from-user.ts to avoid pulling in @sf-run/pi-tui +// Extracted from get-secrets-from-user.ts to avoid pulling in @singularity-forge/pi-tui // when only env-checking is needed (e.g. from files.ts during report generation). import { readFile } from "node:fs/promises"; diff --git a/src/resources/extensions/sf/exit-command.ts b/src/resources/extensions/sf/exit-command.ts index 6a1340c35..70cfb21aa 100644 --- a/src/resources/extensions/sf/exit-command.ts +++ b/src/resources/extensions/sf/exit-command.ts @@ -1,4 +1,4 @@ -import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; type StopAutoFn = (ctx: ExtensionCommandContext, pi: ExtensionAPI, reason?: string) => Promise; diff --git a/src/resources/extensions/sf/export.ts b/src/resources/extensions/sf/export.ts index 053ac5ad7..5c98e7264 100644 --- a/src/resources/extensions/sf/export.ts +++ b/src/resources/extensions/sf/export.ts @@ -1,7 +1,7 @@ // SF Extension — Session/Milestone Export // Generate shareable reports of milestone work in JSON or markdown format. -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { writeFileSync, mkdirSync } from "node:fs"; import { join, basename } from "node:path"; import { exec, execFile } from "node:child_process"; diff --git a/src/resources/extensions/sf/forensics.ts b/src/resources/extensions/sf/forensics.ts index 200daf967..2eeb0c56d 100644 --- a/src/resources/extensions/sf/forensics.ts +++ b/src/resources/extensions/sf/forensics.ts @@ -8,7 +8,7 @@ * Entry point: handleForensics() called from commands.ts */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, mkdirSync, readFileSync, readdirSync, statSync, writeFileSync } from "node:fs"; import { join, dirname, relative } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/src/resources/extensions/sf/guided-flow-queue.ts b/src/resources/extensions/sf/guided-flow-queue.ts index 35aae2e5f..0fb11531d 100644 --- a/src/resources/extensions/sf/guided-flow-queue.ts +++ b/src/resources/extensions/sf/guided-flow-queue.ts @@ -6,7 +6,7 @@ * directories (which auto-mode won't touch until it reaches them). */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { showNextAction } from "../shared/tui.js"; import { setQueuePhaseActive } from "./index.js"; import { loadFile } from "./files.js"; diff --git a/src/resources/extensions/sf/guided-flow.ts b/src/resources/extensions/sf/guided-flow.ts index 0100ddf2f..b53a15639 100644 --- a/src/resources/extensions/sf/guided-flow.ts +++ b/src/resources/extensions/sf/guided-flow.ts @@ -7,7 +7,7 @@ * No execution state, no hooks, no tools — the LLM does the rest. */ -import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import type { SFState } from "./types.js"; import { showNextAction } from "../shared/tui.js"; import { loadFile, saveFile } from "./files.js"; diff --git a/src/resources/extensions/sf/health-widget.ts b/src/resources/extensions/sf/health-widget.ts index 0a129325d..fa32b1043 100644 --- a/src/resources/extensions/sf/health-widget.ts +++ b/src/resources/extensions/sf/health-widget.ts @@ -8,7 +8,7 @@ * Widget key: "sf-health", placement: "belowEditor" */ -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import type { SFState } from "./types.js"; import { runProviderChecks, summariseProviderIssues } from "./doctor-providers.js"; import { runEnvironmentChecks } from "./doctor-environment.js"; diff --git a/src/resources/extensions/sf/history.ts b/src/resources/extensions/sf/history.ts index 78a8e2597..377711ab5 100644 --- a/src/resources/extensions/sf/history.ts +++ b/src/resources/extensions/sf/history.ts @@ -1,7 +1,7 @@ // SF Extension — Session History View // Human-readable display of past auto-mode unit executions. -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { formatDuration, truncateWithEllipsis } from "../shared/format-utils.js"; import { padRight } from "../shared/layout-utils.js"; import { diff --git a/src/resources/extensions/sf/index.ts b/src/resources/extensions/sf/index.ts index 48aba9d85..c8e3426ea 100644 --- a/src/resources/extensions/sf/index.ts +++ b/src/resources/extensions/sf/index.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; export { isDepthConfirmationAnswer, diff --git a/src/resources/extensions/sf/init-wizard.ts b/src/resources/extensions/sf/init-wizard.ts index 5d06d718a..484634362 100644 --- a/src/resources/extensions/sf/init-wizard.ts +++ b/src/resources/extensions/sf/init-wizard.ts @@ -6,7 +6,7 @@ * bootstraps .sf/ structure, and transitions to the first milestone discussion. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, mkdirSync, writeFileSync, readFileSync } from "node:fs"; import { join } from "node:path"; import { showNextAction } from "../shared/tui.js"; diff --git a/src/resources/extensions/sf/key-manager.ts b/src/resources/extensions/sf/key-manager.ts index a354ef1cb..e171b5ad2 100644 --- a/src/resources/extensions/sf/key-manager.ts +++ b/src/resources/extensions/sf/key-manager.ts @@ -5,14 +5,14 @@ * Works with AuthStorage from pi-coding-agent — no core package changes needed. */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { AuthStorage, type AuthCredential, type ApiKeyCredential, type OAuthCredential, -} from "@sf-run/pi-coding-agent"; -import { getEnvApiKey } from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-coding-agent"; +import { getEnvApiKey } from "@singularity-forge/pi-ai"; import { existsSync, statSync, chmodSync } from "node:fs"; import { join, dirname } from "node:path"; import { mkdirSync } from "node:fs"; diff --git a/src/resources/extensions/sf/memory-extractor.ts b/src/resources/extensions/sf/memory-extractor.ts index 22b098609..4ceaefda3 100644 --- a/src/resources/extensions/sf/memory-extractor.ts +++ b/src/resources/extensions/sf/memory-extractor.ts @@ -5,8 +5,8 @@ // (mutex guard). Fire-and-forget — never blocks auto-mode. import { readFileSync, statSync } from 'node:fs'; -import type { ExtensionContext } from '@sf-run/pi-coding-agent'; -import type { Api, AssistantMessage, Model } from '@sf-run/pi-ai'; +import type { ExtensionContext } from '@singularity-forge/pi-coding-agent'; +import type { Api, AssistantMessage, Model } from '@singularity-forge/pi-ai'; import { getActiveMemories, isUnitProcessed, @@ -94,7 +94,7 @@ export function buildMemoryLLMCall(ctx: ExtensionContext): LLMCallFn | null { const resolvedKeyPromise = ctx.modelRegistry.getApiKey(selectedModel).catch(() => undefined); return async (system: string, user: string): Promise => { - const { completeSimple } = await import('@sf-run/pi-ai'); + const { completeSimple } = await import('@singularity-forge/pi-ai'); const resolvedApiKey = await resolvedKeyPromise; const result: AssistantMessage = await completeSimple(selectedModel, { systemPrompt: system, diff --git a/src/resources/extensions/sf/metrics.ts b/src/resources/extensions/sf/metrics.ts index d3b044bf6..2849fc141 100644 --- a/src/resources/extensions/sf/metrics.ts +++ b/src/resources/extensions/sf/metrics.ts @@ -14,7 +14,7 @@ */ import { join } from "node:path"; -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { sfRoot } from "./paths.js"; import { getAndClearSkills } from "./skill-telemetry.js"; import { loadJsonFile, loadJsonFileOrNull, saveJsonFile } from "./json-persistence.js"; @@ -24,7 +24,7 @@ import { isAuditEnvelopeEnabled } from "./uok/audit-toggle.js"; import { getDatabase } from "./sf-db.js"; // Re-export from shared — import directly from format-utils to avoid pulling -// in the full barrel (mod.js → ui.js → @sf-run/pi-tui) which breaks when loaded +// in the full barrel (mod.js → ui.js → @singularity-forge/pi-tui) which breaks when loaded // outside jiti's alias resolution (e.g. dynamic import in auto-loop reports). export { formatTokenCount } from "../shared/format-utils.js"; diff --git a/src/resources/extensions/sf/migrate/command.ts b/src/resources/extensions/sf/migrate/command.ts index aba7ff422..6461c9c5f 100644 --- a/src/resources/extensions/sf/migrate/command.ts +++ b/src/resources/extensions/sf/migrate/command.ts @@ -9,7 +9,7 @@ * output for SF-2 standards compliance. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync } from "node:fs"; import { resolve, join, dirname } from "node:path"; import { sfRoot } from "../paths.js"; diff --git a/src/resources/extensions/sf/model-router.ts b/src/resources/extensions/sf/model-router.ts index f3afce0f9..40ff1df0c 100644 --- a/src/resources/extensions/sf/model-router.ts +++ b/src/resources/extensions/sf/model-router.ts @@ -5,9 +5,9 @@ import type { ComplexityTier, ClassificationResult, TaskMetadata } from "./complexity-classifier.js"; import { tierOrdinal } from "./complexity-classifier.js"; import type { ResolvedModelConfig } from "./preferences.js"; -import { getProviderCapabilities, type ProviderCapabilities } from "@sf-run/pi-ai"; -import { getToolCompatibility, getAllToolCompatibility } from "@sf-run/pi-coding-agent"; -import type { ToolCompatibility } from "@sf-run/pi-coding-agent"; +import { getProviderCapabilities, type ProviderCapabilities } from "@singularity-forge/pi-ai"; +import { getToolCompatibility, getAllToolCompatibility } from "@singularity-forge/pi-coding-agent"; +import type { ToolCompatibility } from "@singularity-forge/pi-coding-agent"; // ─── Types ─────────────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/sf/native-git-bridge.ts b/src/resources/extensions/sf/native-git-bridge.ts index a33b7e209..a70636152 100644 --- a/src/resources/extensions/sf/native-git-bridge.ts +++ b/src/resources/extensions/sf/native-git-bridge.ts @@ -121,7 +121,7 @@ function loadNative(): typeof nativeModule { try { // eslint-disable-next-line @typescript-eslint/no-require-imports - const mod = require("@sf-run/native"); + const mod = require("@singularity-forge/native"); if (mod.gitCurrentBranch && mod.gitHasChanges) { nativeModule = mod; } diff --git a/src/resources/extensions/sf/native-parser-bridge.ts b/src/resources/extensions/sf/native-parser-bridge.ts index e44b7c8d4..780852888 100644 --- a/src/resources/extensions/sf/native-parser-bridge.ts +++ b/src/resources/extensions/sf/native-parser-bridge.ts @@ -38,7 +38,7 @@ function loadNative(): typeof nativeModule { try { // Dynamic import to avoid hard dependency - fails gracefully if native module not built // eslint-disable-next-line @typescript-eslint/no-require-imports - const mod = require('@sf-run/native'); + const mod = require('@singularity-forge/native'); if (mod.parseFrontmatter && mod.extractSection && mod.batchParseGsdFiles) { nativeModule = mod; } diff --git a/src/resources/extensions/sf/notification-overlay.ts b/src/resources/extensions/sf/notification-overlay.ts index a369e9782..177cbd5d8 100644 --- a/src/resources/extensions/sf/notification-overlay.ts +++ b/src/resources/extensions/sf/notification-overlay.ts @@ -2,8 +2,8 @@ // Scrollable panel showing all persisted notifications with severity filtering. // Toggled with Ctrl+Alt+N (⌃⌥N on macOS), Ctrl+Shift+N fallback, or /sf notifications. -import type { Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { readNotifications, diff --git a/src/resources/extensions/sf/notification-widget.ts b/src/resources/extensions/sf/notification-widget.ts index b32febda9..b924a09f8 100644 --- a/src/resources/extensions/sf/notification-widget.ts +++ b/src/resources/extensions/sf/notification-widget.ts @@ -3,7 +3,7 @@ // the most recent notification message. Refreshes every 30 seconds. // Widget key: "sf-notifications", placement: "belowEditor" -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { getUnreadCount, onNotificationStoreChange } from "./notification-store.js"; import { formattedShortcutPair } from "./shortcut-defs.js"; diff --git a/src/resources/extensions/sf/parallel-monitor-overlay.ts b/src/resources/extensions/sf/parallel-monitor-overlay.ts index a130a07a4..7b7d54bc3 100644 --- a/src/resources/extensions/sf/parallel-monitor-overlay.ts +++ b/src/resources/extensions/sf/parallel-monitor-overlay.ts @@ -12,8 +12,8 @@ import { existsSync, statSync, readFileSync, openSync, readSync, closeSync, read import { join } from "node:path"; import { spawnSync } from "node:child_process"; -import type { Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { formatDuration, STATUS_GLYPH, STATUS_COLOR } from "../shared/mod.js"; import { formattedShortcutPair } from "./shortcut-defs.js"; diff --git a/src/resources/extensions/sf/queue-reorder-ui.ts b/src/resources/extensions/sf/queue-reorder-ui.ts index 88dd17759..56313734d 100644 --- a/src/resources/extensions/sf/queue-reorder-ui.ts +++ b/src/resources/extensions/sf/queue-reorder-ui.ts @@ -8,9 +8,9 @@ * Conflicting depends_on entries are auto-removed on confirm. */ -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; -import { type Theme } from "@sf-run/pi-coding-agent"; -import { Key, matchesKey, truncateToWidth, type TUI } from "@sf-run/pi-tui"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import { type Theme } from "@singularity-forge/pi-coding-agent"; +import { Key, matchesKey, truncateToWidth, type TUI } from "@singularity-forge/pi-tui"; import { makeUI } from "../shared/tui.js"; import { GLYPH } from "../shared/mod.js"; import { validateQueueOrder, type DependencyValidation } from "./queue-order.js"; diff --git a/src/resources/extensions/sf/quick.ts b/src/resources/extensions/sf/quick.ts index dc8e30976..ad24b2c27 100644 --- a/src/resources/extensions/sf/quick.ts +++ b/src/resources/extensions/sf/quick.ts @@ -9,7 +9,7 @@ * "Quick Tasks Completed" table. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { loadPrompt } from "./prompt-loader.js"; diff --git a/src/resources/extensions/sf/rethink.ts b/src/resources/extensions/sf/rethink.ts index 1d667e0b7..b43a09d6b 100644 --- a/src/resources/extensions/sf/rethink.ts +++ b/src/resources/extensions/sf/rethink.ts @@ -7,7 +7,7 @@ * through conversation. */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync } from "node:fs"; import { isAutoActive } from "./auto.js"; diff --git a/src/resources/extensions/sf/safety/gemini-permissions.ts b/src/resources/extensions/sf/safety/gemini-permissions.ts index a5470d36d..9736a1ab4 100644 --- a/src/resources/extensions/sf/safety/gemini-permissions.ts +++ b/src/resources/extensions/sf/safety/gemini-permissions.ts @@ -1,4 +1,4 @@ -import type { AgentToolCall } from "@sf-run/pi-agent-core"; +import type { AgentToolCall } from "@singularity-forge/pi-agent-core"; /** * Gemini Permissions Addon diff --git a/src/resources/extensions/sf/service-tier.ts b/src/resources/extensions/sf/service-tier.ts index 5bd22c47c..e1f4f8338 100644 --- a/src/resources/extensions/sf/service-tier.ts +++ b/src/resources/extensions/sf/service-tier.ts @@ -8,7 +8,7 @@ * use a single source of truth. */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync } from "node:fs"; import { saveFile } from "./files.js"; diff --git a/src/resources/extensions/sf/skill-catalog.ts b/src/resources/extensions/sf/skill-catalog.ts index 21873968d..388993a15 100644 --- a/src/resources/extensions/sf/skill-catalog.ts +++ b/src/resources/extensions/sf/skill-catalog.ts @@ -16,7 +16,7 @@ import { execFile } from "node:child_process"; import { existsSync } from "node:fs"; import { join } from "node:path"; import { homedir } from "node:os"; -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { showNextAction } from "../shared/tui.js"; import type { ProjectSignals, XcodePlatform } from "./detection.js"; diff --git a/src/resources/extensions/sf/tests/budget-prediction.test.ts b/src/resources/extensions/sf/tests/budget-prediction.test.ts index cee13b8f9..0561ff417 100644 --- a/src/resources/extensions/sf/tests/budget-prediction.test.ts +++ b/src/resources/extensions/sf/tests/budget-prediction.test.ts @@ -17,7 +17,7 @@ const metricsSrc = readFileSync(join(__dirname, "..", "metrics.ts"), "utf-8"); const dashboardSrc = readFileSync(join(__dirname, "..", "auto-dashboard.ts"), "utf-8"); // ─── Extract pure functions from metrics.ts source ──────────────────────── -// Can't import directly due to paths.js → @sf-run/pi-coding-agent import chain. +// Can't import directly due to paths.js → @singularity-forge/pi-coding-agent import chain. // Extract and evaluate the pure math functions. interface MockUnitMetrics { diff --git a/src/resources/extensions/sf/tests/claude-import-tui.test.ts b/src/resources/extensions/sf/tests/claude-import-tui.test.ts index e5d465196..bcaa03859 100644 --- a/src/resources/extensions/sf/tests/claude-import-tui.test.ts +++ b/src/resources/extensions/sf/tests/claude-import-tui.test.ts @@ -13,7 +13,7 @@ import assert from 'node:assert'; import { existsSync, mkdtempSync, rmSync, writeFileSync, readFileSync, mkdirSync } from 'node:fs'; import { tmpdir } from 'node:os'; import { join } from 'node:path'; -import type { ExtensionCommandContext } from '@sf-run/pi-coding-agent'; +import type { ExtensionCommandContext } from '@singularity-forge/pi-coding-agent'; import { runClaudeImportFlow, getClaudeSearchRoots, discoverClaudeSkills, discoverClaudePlugins } from '../claude-import.js'; import { getMarketplaceFixtures } from './marketplace-test-fixtures.js'; diff --git a/src/resources/extensions/sf/tests/dist-redirect.mjs b/src/resources/extensions/sf/tests/dist-redirect.mjs index 7aadece0e..e6b972217 100644 --- a/src/resources/extensions/sf/tests/dist-redirect.mjs +++ b/src/resources/extensions/sf/tests/dist-redirect.mjs @@ -9,25 +9,25 @@ const ROOT = new URL("../../../../../", import.meta.url); export function resolve(specifier, context, nextResolve) { // 1. Redirect all workspace package bare imports to source. // CI portability runs don't build any packages/ dist artifacts, so every - // @sf-run/* specifier (including transitive ones pulled in by pi-coding-agent + // @singularity-forge/* specifier (including transitive ones pulled in by pi-coding-agent // source itself) must resolve to the TypeScript source entrypoint. if (specifier === "../../packages/pi-coding-agent/src/index.js") { specifier = new URL("packages/pi-coding-agent/src/index.ts", ROOT).href; - } else if (specifier === "@sf-run/@sf-run/pi-coding-agent") { + } else if (specifier === "@singularity-forge/@singularity-forge/pi-coding-agent") { specifier = new URL("packages/pi-coding-agent/src/index.ts", ROOT).href; - } else if (specifier === "@sf-run/pi-ai/oauth") { + } else if (specifier === "@singularity-forge/pi-ai/oauth") { specifier = new URL("packages/pi-ai/src/utils/oauth/index.ts", ROOT).href; - } else if (specifier === "@sf-run/@sf-run/pi-ai") { + } else if (specifier === "@singularity-forge/@singularity-forge/pi-ai") { specifier = new URL("packages/pi-ai/src/index.ts", ROOT).href; - } else if (specifier === "@sf-run/@sf-run/pi-agent-core") { + } else if (specifier === "@singularity-forge/@singularity-forge/pi-agent-core") { specifier = new URL("packages/pi-agent-core/src/index.ts", ROOT).href; - } else if (specifier === "@sf-run/@sf-run/pi-tui") { + } else if (specifier === "@singularity-forge/@singularity-forge/pi-tui") { specifier = new URL("packages/pi-tui/src/index.ts", ROOT).href; - } else if (specifier === "@sf-run/@sf-run/native") { + } else if (specifier === "@singularity-forge/@singularity-forge/native") { specifier = new URL("packages/native/src/index.ts", ROOT).href; - } else if (specifier.startsWith("@sf-run/native/")) { - // Sub-path imports like @sf-run/native/fd, @sf-run/native/text, etc. - const subpath = specifier.slice("@sf-run/native/".length); + } else if (specifier.startsWith("@singularity-forge/native/")) { + // Sub-path imports like @singularity-forge/native/fd, @singularity-forge/native/text, etc. + const subpath = specifier.slice("@singularity-forge/native/".length); specifier = new URL(`packages/native/src/${subpath}/index.ts`, ROOT).href; } // 2. Redirect packages/*/dist/ → packages/*/src/ with .js→.ts for strip-types diff --git a/src/resources/extensions/sf/tests/integration/milestone-transition-worktree.test.ts b/src/resources/extensions/sf/tests/integration/milestone-transition-worktree.test.ts index dc3ffff26..a10719f0f 100644 --- a/src/resources/extensions/sf/tests/integration/milestone-transition-worktree.test.ts +++ b/src/resources/extensions/sf/tests/integration/milestone-transition-worktree.test.ts @@ -5,7 +5,7 @@ * worktree lifecycle is handled: old worktree merged, new worktree created. * * Uses source-level checks since the full auto-mode dispatch loop - * requires the @sf-run/pi-coding-agent runtime. + * requires the @singularity-forge/pi-coding-agent runtime. */ import test from "node:test"; diff --git a/src/resources/extensions/sf/tests/key-manager.test.ts b/src/resources/extensions/sf/tests/key-manager.test.ts index 957483daa..adbecb2f5 100644 --- a/src/resources/extensions/sf/tests/key-manager.test.ts +++ b/src/resources/extensions/sf/tests/key-manager.test.ts @@ -1,6 +1,6 @@ import test from "node:test"; import assert from "node:assert/strict"; -import { AuthStorage } from "@sf-run/pi-coding-agent"; +import { AuthStorage } from "@singularity-forge/pi-coding-agent"; import { maskKey, formatDuration, diff --git a/src/resources/extensions/sf/tests/lazy-pi-tui-import.test.ts b/src/resources/extensions/sf/tests/lazy-pi-tui-import.test.ts index e8b8461c6..14a71e03f 100644 --- a/src/resources/extensions/sf/tests/lazy-pi-tui-import.test.ts +++ b/src/resources/extensions/sf/tests/lazy-pi-tui-import.test.ts @@ -1,4 +1,4 @@ -// Structural contract: shared/mod.ts must never import @sf-run/pi-tui. +// Structural contract: shared/mod.ts must never import @singularity-forge/pi-tui. // TUI-dependent exports live in shared/tui.ts instead. import test from "node:test"; @@ -9,7 +9,7 @@ import { fileURLToPath } from "node:url"; const __dirname = dirname(fileURLToPath(import.meta.url)); -test('shared/mod.ts has no import from "@sf-run/pi-tui"', () => { +test('shared/mod.ts has no import from "@singularity-forge/pi-tui"', () => { const src = readFileSync(join(__dirname, "../../shared/mod.ts"), "utf-8"); - assert.ok(!src.includes("@sf-run/pi-tui"), 'mod.ts must not import "@sf-run/pi-tui"'); + assert.ok(!src.includes("@singularity-forge/pi-tui"), 'mod.ts must not import "@singularity-forge/pi-tui"'); }); diff --git a/src/resources/extensions/sf/tests/memory-leak-guards.test.ts b/src/resources/extensions/sf/tests/memory-leak-guards.test.ts index 460f97c8f..7706e9edd 100644 --- a/src/resources/extensions/sf/tests/memory-leak-guards.test.ts +++ b/src/resources/extensions/sf/tests/memory-leak-guards.test.ts @@ -13,7 +13,7 @@ import { tmpdir } from "node:os"; import { saveActivityLog, clearActivityLogState } from "../activity-log.ts"; import { clearPathCache } from "../paths.ts"; -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; function createCtx(entries: unknown[]) { return { sessionManager: { getEntries: () => entries } } as unknown as ExtensionContext; diff --git a/src/resources/extensions/sf/tests/resolve-ts-hooks.mjs b/src/resources/extensions/sf/tests/resolve-ts-hooks.mjs index bed4f5fd3..45802f225 100644 --- a/src/resources/extensions/sf/tests/resolve-ts-hooks.mjs +++ b/src/resources/extensions/sf/tests/resolve-ts-hooks.mjs @@ -5,8 +5,8 @@ const PACKAGES_ROOT = fileURLToPath(new URL("packages/", ROOT)); export function resolve(specifier, context, nextResolve) { let tsSpecifier = specifier; - if (specifier.includes('@sf-run/')) { - tsSpecifier = specifier.replace('@sf-run/', PACKAGES_ROOT).replace('/dist/', '/src/'); + if (specifier.includes('@singularity-forge/')) { + tsSpecifier = specifier.replace('@singularity-forge/', PACKAGES_ROOT).replace('/dist/', '/src/'); if (tsSpecifier.includes('/packages/pi-ai') && !tsSpecifier.endsWith('.ts')) { tsSpecifier = tsSpecifier.replace(/\/packages\/pi-ai$/, '/packages/pi-ai/src/index.ts'); } else if (!tsSpecifier.includes('/src/') && !tsSpecifier.endsWith('.ts')) { diff --git a/src/resources/extensions/sf/tests/skill-activation.test.ts b/src/resources/extensions/sf/tests/skill-activation.test.ts index 663694426..4bf681314 100644 --- a/src/resources/extensions/sf/tests/skill-activation.test.ts +++ b/src/resources/extensions/sf/tests/skill-activation.test.ts @@ -3,7 +3,7 @@ import assert from "node:assert/strict"; import { mkdtempSync, mkdirSync, rmSync, writeFileSync } from "node:fs"; import { join } from "node:path"; import { tmpdir } from "node:os"; -import { loadSkills } from "@sf-run/pi-coding-agent"; +import { loadSkills } from "@singularity-forge/pi-coding-agent"; import { buildSkillActivationBlock } from "../auto-prompts.js"; import type { SFPreferences } from "../preferences.js"; diff --git a/src/resources/extensions/sf/tests/token-profile.test.ts b/src/resources/extensions/sf/tests/token-profile.test.ts index 49ddc1884..15596b766 100644 --- a/src/resources/extensions/sf/tests/token-profile.test.ts +++ b/src/resources/extensions/sf/tests/token-profile.test.ts @@ -6,7 +6,7 @@ * table guard clauses (source-level structural verification). * * Uses source-level checks (readFileSync + string matching) to avoid - * @sf-run/pi-coding-agent import resolution issues in dev environments. + * @singularity-forge/pi-coding-agent import resolution issues in dev environments. */ import test from "node:test"; diff --git a/src/resources/extensions/sf/tests/tool-compatibility.test.ts b/src/resources/extensions/sf/tests/tool-compatibility.test.ts index 03d46ca00..bfbe2bb55 100644 --- a/src/resources/extensions/sf/tests/tool-compatibility.test.ts +++ b/src/resources/extensions/sf/tests/tool-compatibility.test.ts @@ -8,7 +8,7 @@ import { getAllToolCompatibility, registerMcpToolCompatibility, resetToolCompatibilityRegistry, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; import { isToolCompatibleWithProvider, @@ -18,7 +18,7 @@ import { import { getProviderCapabilities, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; // ─── Tool Compatibility Registry ──────────────────────────────────────────── diff --git a/src/resources/extensions/sf/tests/triage-dispatch.test.ts b/src/resources/extensions/sf/tests/triage-dispatch.test.ts index d020b78da..693c48c62 100644 --- a/src/resources/extensions/sf/tests/triage-dispatch.test.ts +++ b/src/resources/extensions/sf/tests/triage-dispatch.test.ts @@ -4,7 +4,7 @@ * These tests verify structural invariants of the triage integration * by inspecting the actual source code of auto-post-unit.ts, auto.ts, * and post-unit-hooks.ts. Full behavioral testing requires the - * @sf-run/pi-coding-agent runtime. + * @singularity-forge/pi-coding-agent runtime. */ import test from "node:test"; diff --git a/src/resources/extensions/sf/tests/triage-resolution.test.ts b/src/resources/extensions/sf/tests/triage-resolution.test.ts index ee82581e7..cafe979f9 100644 --- a/src/resources/extensions/sf/tests/triage-resolution.test.ts +++ b/src/resources/extensions/sf/tests/triage-resolution.test.ts @@ -8,7 +8,7 @@ import { mkdirSync, readFileSync, writeFileSync, rmSync, existsSync } from "node import { join } from "node:path"; import { tmpdir } from "node:os"; import { appendCapture, markCaptureResolved, markCaptureExecuted, loadAllCaptures, loadActionableCaptures } from "../captures.ts"; -// Import only the functions that don't depend on @sf-run/pi-coding-agent +// Import only the functions that don't depend on @singularity-forge/pi-coding-agent // (triage-ui.ts imports next-action-ui.ts which imports the unavailable package) import { executeInject, executeReplan, detectFileOverlap, loadDeferredCaptures, loadReplanCaptures, buildQuickTaskPrompt, executeTriageResolutions, ensureDeferMilestoneDir } from "../triage-resolution.ts"; diff --git a/src/resources/extensions/sf/tests/uok-model-policy.test.ts b/src/resources/extensions/sf/tests/uok-model-policy.test.ts index ffbcc21b1..b748f6e5c 100644 --- a/src/resources/extensions/sf/tests/uok-model-policy.test.ts +++ b/src/resources/extensions/sf/tests/uok-model-policy.test.ts @@ -11,7 +11,7 @@ import { import { registerToolCompatibility, resetToolCompatibilityRegistry, -} from "@sf-run/pi-coding-agent"; +} from "@singularity-forge/pi-coding-agent"; test.afterEach(() => { resetToolCompatibilityRegistry(); diff --git a/src/resources/extensions/sf/triage-ui.ts b/src/resources/extensions/sf/triage-ui.ts index 907adc683..bfc3e3d90 100644 --- a/src/resources/extensions/sf/triage-ui.ts +++ b/src/resources/extensions/sf/triage-ui.ts @@ -9,7 +9,7 @@ * confirmed classifications. */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { showNextAction } from "../shared/tui.js"; import type { CaptureEntry, Classification, TriageResult } from "./captures.js"; import { markCaptureResolved } from "./captures.js"; diff --git a/src/resources/extensions/sf/undo.ts b/src/resources/extensions/sf/undo.ts index 614ce717c..52f8f91c8 100644 --- a/src/resources/extensions/sf/undo.ts +++ b/src/resources/extensions/sf/undo.ts @@ -3,7 +3,7 @@ // handleUndoTask: Reset a single task's DB status to "pending" and re-render markdown. // handleResetSlice: Reset a slice and all its tasks, re-rendering plan + roadmap. -import type { ExtensionCommandContext, ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext, ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { existsSync, readFileSync, unlinkSync, readdirSync } from "node:fs"; import { join, basename } from "node:path"; import { nativeRevertCommit, nativeRevertAbort } from "./native-git-bridge.js"; diff --git a/src/resources/extensions/sf/uok/kernel.ts b/src/resources/extensions/sf/uok/kernel.ts index d94dd004e..430f662f1 100644 --- a/src/resources/extensions/sf/uok/kernel.ts +++ b/src/resources/extensions/sf/uok/kernel.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { appendFileSync, mkdirSync } from "node:fs"; import { join } from "node:path"; diff --git a/src/resources/extensions/sf/visualizer-overlay.ts b/src/resources/extensions/sf/visualizer-overlay.ts index 3c7b72e90..51831c2d9 100644 --- a/src/resources/extensions/sf/visualizer-overlay.ts +++ b/src/resources/extensions/sf/visualizer-overlay.ts @@ -1,5 +1,5 @@ -import type { Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, matchesKey, Key } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, matchesKey, Key } from "@singularity-forge/pi-tui"; import { loadVisualizerData, type VisualizerData } from "./visualizer-data.js"; import { renderProgressView, diff --git a/src/resources/extensions/sf/visualizer-views.ts b/src/resources/extensions/sf/visualizer-views.ts index 0b819b3b4..4ba232f05 100644 --- a/src/resources/extensions/sf/visualizer-views.ts +++ b/src/resources/extensions/sf/visualizer-views.ts @@ -1,7 +1,7 @@ // View renderers for the SF workflow visualizer overlay. -import type { Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import type { Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; import type { VisualizerData, VisualizerMilestone, SliceVerification, VisualizerSliceActivity, VisualizerStats, VisualizerSliceRef } from "./visualizer-data.js"; import { formatCost, formatTokenCount, classifyUnitPhase } from "./metrics.js"; import { formatDuration, padRight, joinColumns, sparkline, STATUS_GLYPH, STATUS_COLOR } from "../shared/mod.js"; diff --git a/src/resources/extensions/sf/watch/header-renderer.ts b/src/resources/extensions/sf/watch/header-renderer.ts index 74a3cb693..f16f1a765 100644 --- a/src/resources/extensions/sf/watch/header-renderer.ts +++ b/src/resources/extensions/sf/watch/header-renderer.ts @@ -5,7 +5,7 @@ import { execFileSync } from "node:child_process"; import { existsSync, readFileSync } from "node:fs"; import { homedir } from "node:os"; import { join } from "node:path"; -import { visibleWidth, truncateToWidth } from "@sf-run/pi-tui"; +import { visibleWidth, truncateToWidth } from "@singularity-forge/pi-tui"; import { loadEffectiveSFPreferences } from "../preferences.js"; // ─── Constants ──────────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/sf/workflow-mcp-auto-prep.ts b/src/resources/extensions/sf/workflow-mcp-auto-prep.ts index 93a58da83..b324a734c 100644 --- a/src/resources/extensions/sf/workflow-mcp-auto-prep.ts +++ b/src/resources/extensions/sf/workflow-mcp-auto-prep.ts @@ -1,4 +1,4 @@ -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { type EnsureProjectWorkflowMcpConfigResult, diff --git a/src/resources/extensions/sf/worktree-command-bootstrap.ts b/src/resources/extensions/sf/worktree-command-bootstrap.ts index 24871bfc4..7655da4b6 100644 --- a/src/resources/extensions/sf/worktree-command-bootstrap.ts +++ b/src/resources/extensions/sf/worktree-command-bootstrap.ts @@ -1,4 +1,4 @@ -import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import { importExtensionModule, type ExtensionAPI, type ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; const WORKTREE_SUBCOMMANDS = [ { cmd: "list", desc: "List existing worktrees" }, diff --git a/src/resources/extensions/sf/worktree-command.ts b/src/resources/extensions/sf/worktree-command.ts index e87446917..e67b48b6f 100644 --- a/src/resources/extensions/sf/worktree-command.ts +++ b/src/resources/extensions/sf/worktree-command.ts @@ -10,7 +10,7 @@ * /worktree remove — remove a worktree and its branch */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { loadPrompt } from "./prompt-loader.js"; import { autoCommitCurrentBranch, getMainBranch, resolveGitHeadPath, nudgeGitBranchCache } from "./worktree.js"; import { runWorktreePostCreateHook } from "./auto-worktree.js"; diff --git a/src/resources/extensions/shared/confirm-ui.ts b/src/resources/extensions/shared/confirm-ui.ts index f1d7166b9..086ea82de 100644 --- a/src/resources/extensions/shared/confirm-ui.ts +++ b/src/resources/extensions/shared/confirm-ui.ts @@ -15,9 +15,9 @@ * if (!confirmed) return textResult("Cancelled."); */ -import type { ExtensionContext } from "@sf-run/pi-coding-agent"; -import { type Theme } from "@sf-run/pi-coding-agent"; -import { Key, matchesKey, truncateToWidth, type TUI } from "@sf-run/pi-tui"; +import type { ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import { type Theme } from "@singularity-forge/pi-coding-agent"; +import { Key, matchesKey, truncateToWidth, type TUI } from "@singularity-forge/pi-tui"; import { makeUI, GLYPH } from "./ui.js"; export interface ConfirmOptions { diff --git a/src/resources/extensions/shared/format-utils.ts b/src/resources/extensions/shared/format-utils.ts index 5cd005960..c7aee2bbd 100644 --- a/src/resources/extensions/shared/format-utils.ts +++ b/src/resources/extensions/shared/format-utils.ts @@ -1,8 +1,8 @@ /** - * Shared pure formatting utilities — no @sf-run/pi-tui dependency. + * Shared pure formatting utilities — no @singularity-forge/pi-tui dependency. * * ANSI-aware layout helpers (padRight, joinColumns, centerLine, fitColumns) - * live in layout-utils.ts to avoid pulling @sf-run/pi-tui into modules that + * live in layout-utils.ts to avoid pulling @singularity-forge/pi-tui into modules that * run outside jiti's alias resolution (e.g. HTML report generation via * dynamic import in auto-loop). */ diff --git a/src/resources/extensions/shared/interview-ui.ts b/src/resources/extensions/shared/interview-ui.ts index 9d862dde8..e2af133aa 100644 --- a/src/resources/extensions/shared/interview-ui.ts +++ b/src/resources/extensions/shared/interview-ui.ts @@ -25,15 +25,15 @@ * Esc exit confirmation */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; -import { type Theme } from "@sf-run/pi-coding-agent"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; +import { type Theme } from "@singularity-forge/pi-coding-agent"; import { Editor, Key, matchesKey, truncateToWidth, type TUI, -} from "@sf-run/pi-tui"; +} from "@singularity-forge/pi-tui"; import { makeUI, INDENT } from "./ui.js"; // ─── Exported types ─────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/shared/layout-utils.ts b/src/resources/extensions/shared/layout-utils.ts index 96b631413..1b400ffde 100644 --- a/src/resources/extensions/shared/layout-utils.ts +++ b/src/resources/extensions/shared/layout-utils.ts @@ -1,13 +1,13 @@ /** - * ANSI-aware TUI layout utilities that depend on @sf-run/pi-tui. + * ANSI-aware TUI layout utilities that depend on @singularity-forge/pi-tui. * * Separated from format-utils.ts so that modules needing only pure * formatting (e.g. HTML report generation) can import format-utils - * without pulling in the @sf-run/pi-tui dependency — which fails when + * without pulling in the @singularity-forge/pi-tui dependency — which fails when * loaded outside jiti's alias resolution context. */ -import { truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import { truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; // ─── Layout Helpers ─────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/shared/next-action-ui.ts b/src/resources/extensions/shared/next-action-ui.ts index 8ec8f5ef7..19e1c164e 100644 --- a/src/resources/extensions/shared/next-action-ui.ts +++ b/src/resources/extensions/shared/next-action-ui.ts @@ -41,9 +41,9 @@ * Pressing Escape also resolves as "not_yet". */ -import type { ExtensionCommandContext } from "@sf-run/pi-coding-agent"; -import { type Theme } from "@sf-run/pi-coding-agent"; -import { Key, matchesKey, type TUI } from "@sf-run/pi-tui"; +import type { ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; +import { type Theme } from "@singularity-forge/pi-coding-agent"; +import { Key, matchesKey, type TUI } from "@singularity-forge/pi-tui"; import { makeUI } from "./ui.js"; // ─── Public API ─────────────────────────────────────────────────────────────── diff --git a/src/resources/extensions/shared/sanitize.ts b/src/resources/extensions/shared/sanitize.ts index 35aeda14a..4997b125d 100644 --- a/src/resources/extensions/shared/sanitize.ts +++ b/src/resources/extensions/shared/sanitize.ts @@ -3,7 +3,7 @@ * Also provides maskEditorLine for masking sensitive TUI editor input. */ -import { CURSOR_MARKER } from "@sf-run/pi-tui"; +import { CURSOR_MARKER } from "@singularity-forge/pi-tui"; const TOKEN_PATTERNS = [ /xoxb-[A-Za-z0-9\-]+/g, // Slack bot tokens diff --git a/src/resources/extensions/shared/tui.ts b/src/resources/extensions/shared/tui.ts index b97298a6f..c6b7efaa9 100644 --- a/src/resources/extensions/shared/tui.ts +++ b/src/resources/extensions/shared/tui.ts @@ -1,7 +1,7 @@ // Barrel — TUI-dependent exports. // Import from here when your code needs makeUI, showInterviewRound, // showNextAction, or showConfirm. These all have a transitive dependency -// on @sf-run/pi-tui and must not be imported from shared/mod. +// on @singularity-forge/pi-tui and must not be imported from shared/mod. export { makeUI } from "./ui.js"; export type { UI } from "./ui.js"; diff --git a/src/resources/extensions/shared/ui.ts b/src/resources/extensions/shared/ui.ts index 782dc93cc..4e379f406 100644 --- a/src/resources/extensions/shared/ui.ts +++ b/src/resources/extensions/shared/ui.ts @@ -28,8 +28,8 @@ * individual methods don't need it. */ -import { type Theme } from "@sf-run/pi-coding-agent"; -import { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "@sf-run/pi-tui"; +import { type Theme } from "@singularity-forge/pi-coding-agent"; +import { truncateToWidth, visibleWidth, wrapTextWithAnsi } from "@singularity-forge/pi-tui"; // ─── Glyphs ─────────────────────────────────────────────────────────────────── // Change these to restyle every cursor, checkbox, and indicator at once. @@ -191,7 +191,7 @@ export interface UI { // ── Editor theme ────────────────────────────────────────────────────────── /** Standard EditorTheme object for use with the Editor component */ - editorTheme: import("@sf-run/pi-tui").EditorTheme; + editorTheme: import("@singularity-forge/pi-tui").EditorTheme; } /** @@ -216,7 +216,7 @@ export function makeUI(theme: Theme, width: number): UI { // ── EditorTheme ──────────────────────────────────────────────────────────── - const editorTheme: import("@sf-run/pi-tui").EditorTheme = { + const editorTheme: import("@singularity-forge/pi-tui").EditorTheme = { borderColor: (s) => theme.fg("accent", s), selectList: { selectedPrefix: (t) => theme.fg("accent", t), diff --git a/src/resources/extensions/slash-commands/audit.ts b/src/resources/extensions/slash-commands/audit.ts index c2eb46011..8972ebc27 100644 --- a/src/resources/extensions/slash-commands/audit.ts +++ b/src/resources/extensions/slash-commands/audit.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { mkdirSync } from "node:fs"; export default function auditCommand(pi: ExtensionAPI) { diff --git a/src/resources/extensions/slash-commands/clear.ts b/src/resources/extensions/slash-commands/clear.ts index 611d7a10d..5ae5ecdc4 100644 --- a/src/resources/extensions/slash-commands/clear.ts +++ b/src/resources/extensions/slash-commands/clear.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; export default function clearCommand(pi: ExtensionAPI) { pi.registerCommand("clear", { diff --git a/src/resources/extensions/slash-commands/create-extension.ts b/src/resources/extensions/slash-commands/create-extension.ts index b79dd039b..42d7afa43 100644 --- a/src/resources/extensions/slash-commands/create-extension.ts +++ b/src/resources/extensions/slash-commands/create-extension.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { showInterviewRound, type Question, type RoundResult } from "../shared/tui.js"; export default function createExtension(pi: ExtensionAPI) { @@ -281,7 +281,7 @@ Then register it in the main extensions index: ## Rules you must follow exactly - Extension entry point: \`export default function (pi: ExtensionAPI): void { ... }\` -- Import type: \`import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@sf-run/pi-coding-agent";\` +- Import type: \`import type { ExtensionAPI, ExtensionContext, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent";\` - \`pi\` is the registration surface — call \`pi.registerCommand\`, \`pi.registerTool\`, \`pi.on\`, \`pi.registerShortcut\` inside the default export - \`ctx\` (ExtensionCommandContext or ExtensionContext) is passed to handlers and event callbacks — never stored, never assumed available globally - To send a message to the agent: \`pi.sendUserMessage("...")\` or \`pi.sendMessage({ content, display }, { triggerTurn })\` diff --git a/src/resources/extensions/slash-commands/create-slash-command.ts b/src/resources/extensions/slash-commands/create-slash-command.ts index f254b705f..2f0f1cc01 100644 --- a/src/resources/extensions/slash-commands/create-slash-command.ts +++ b/src/resources/extensions/slash-commands/create-slash-command.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import { showInterviewRound, type Question, type RoundResult } from "../shared/tui.js"; export default function createSlashCommand(pi: ExtensionAPI) { @@ -225,7 +225,7 @@ Rules you must follow exactly: - To show a text input dialog: \`await ctx.ui.input("prompt", "placeholder")\` — returns the string or null - \`pi\` is captured in closure from the outer \`export default function(pi: ExtensionAPI)\` — use it freely inside the handler - No \`ctx.session\`, no \`ctx.sendMessage\`, no \`args[]\` array — these do not exist -- Import type: \`import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent";\` +- Import type: \`import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent";\` - Export default: \`export default function (pi: ExtensionAPI) { ... }\` After writing the files, run \`/reload\` to load the new command.`; diff --git a/src/resources/extensions/slash-commands/index.ts b/src/resources/extensions/slash-commands/index.ts index 3a201a2c4..b5eefa104 100644 --- a/src/resources/extensions/slash-commands/index.ts +++ b/src/resources/extensions/slash-commands/index.ts @@ -1,4 +1,4 @@ -import type { ExtensionAPI } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI } from "@singularity-forge/pi-coding-agent"; import createSlashCommand from "./create-slash-command.js"; import createExtension from "./create-extension.js"; import auditCommand from "./audit.js"; diff --git a/src/resources/extensions/subagent/agents.ts b/src/resources/extensions/subagent/agents.ts index 305a30f5f..de3373032 100644 --- a/src/resources/extensions/subagent/agents.ts +++ b/src/resources/extensions/subagent/agents.ts @@ -4,7 +4,7 @@ import * as fs from "node:fs"; import * as path from "node:path"; -import { getAgentDir, parseFrontmatter } from "@sf-run/pi-coding-agent"; +import { getAgentDir, parseFrontmatter } from "@singularity-forge/pi-coding-agent"; const PROJECT_AGENT_DIR_CANDIDATES = [".sf", ".pi"] as const; diff --git a/src/resources/extensions/subagent/index.ts b/src/resources/extensions/subagent/index.ts index 86d2feba1..ff7feb6a3 100644 --- a/src/resources/extensions/subagent/index.ts +++ b/src/resources/extensions/subagent/index.ts @@ -17,11 +17,11 @@ 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 { AgentToolResult } from "@sf-run/pi-agent-core"; -import type { Message } from "@sf-run/pi-ai"; -import { StringEnum } from "@sf-run/pi-ai"; -import { type ExtensionAPI, getMarkdownTheme } from "@sf-run/pi-coding-agent"; -import { Container, Markdown, Spacer, Text } from "@sf-run/pi-tui"; +import type { AgentToolResult } from "@singularity-forge/pi-agent-core"; +import type { Message } from "@singularity-forge/pi-ai"; +import { StringEnum } from "@singularity-forge/pi-ai"; +import { type ExtensionAPI, getMarkdownTheme } from "@singularity-forge/pi-coding-agent"; +import { Container, Markdown, Spacer, Text } from "@singularity-forge/pi-tui"; import { Type } from "@sinclair/typebox"; import { formatTokenCount } from "../shared/mod.js"; import { getCurrentPhase } from "../shared/sf-phase-state.js"; diff --git a/src/resources/extensions/subagent/isolation.ts b/src/resources/extensions/subagent/isolation.ts index bc3a39db8..58abdd3bb 100644 --- a/src/resources/extensions/subagent/isolation.ts +++ b/src/resources/extensions/subagent/isolation.ts @@ -491,7 +491,7 @@ export async function mergeDeltaPatches( export function readIsolationMode(): IsolationMode { try { - const { getAgentDir } = require("@sf-run/pi-coding-agent"); + const { getAgentDir } = require("@singularity-forge/pi-coding-agent"); const settingsPath = path.join(getAgentDir(), "settings.json"); if (!fs.existsSync(settingsPath)) return "none"; const settings = JSON.parse(fs.readFileSync(settingsPath, "utf-8")); diff --git a/src/resources/extensions/ttsr/index.ts b/src/resources/extensions/ttsr/index.ts index 83735ce28..3d63163ca 100644 --- a/src/resources/extensions/ttsr/index.ts +++ b/src/resources/extensions/ttsr/index.ts @@ -13,8 +13,8 @@ * agent_end → if pending violation, inject rule via sendMessage */ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; -import type { AssistantMessageEvent } from "@sf-run/pi-ai"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; +import type { AssistantMessageEvent } from "@singularity-forge/pi-ai"; import { readFileSync } from "node:fs"; import { join, dirname } from "node:path"; import { fileURLToPath } from "node:url"; diff --git a/src/resources/extensions/ttsr/ttsr-manager.ts b/src/resources/extensions/ttsr/ttsr-manager.ts index 44b37499e..937c60f8a 100644 --- a/src/resources/extensions/ttsr/ttsr-manager.ts +++ b/src/resources/extensions/ttsr/ttsr-manager.ts @@ -26,7 +26,7 @@ let nativeTtsr: { try { // Dynamic import to avoid hard dependency — gracefully degrades to JS. - const native = await import("@sf-run/native"); + const native = await import("@singularity-forge/native"); if (native.ttsrCompileRules && native.ttsrCheckBuffer && native.ttsrFreeRules) { nativeTtsr = { ttsrCompileRules: native.ttsrCompileRules, diff --git a/src/resources/extensions/universal-config/index.ts b/src/resources/extensions/universal-config/index.ts index 7017ba7bc..352beaa06 100644 --- a/src/resources/extensions/universal-config/index.ts +++ b/src/resources/extensions/universal-config/index.ts @@ -14,7 +14,7 @@ * - /configs command (slash command) */ -import type { ExtensionAPI, ExtensionCommandContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionCommandContext } from "@singularity-forge/pi-coding-agent"; import { Type } from "@sinclair/typebox"; import { discoverAllConfigs } from "./discovery.js"; import { formatDiscoveryForTool, formatDiscoveryForCommand } from "./format.js"; diff --git a/src/resources/extensions/voice/index.ts b/src/resources/extensions/voice/index.ts index c401d5323..8c7619eef 100644 --- a/src/resources/extensions/voice/index.ts +++ b/src/resources/extensions/voice/index.ts @@ -1,7 +1,7 @@ -import type { ExtensionAPI, ExtensionContext } from "@sf-run/pi-coding-agent"; +import type { ExtensionAPI, ExtensionContext } from "@singularity-forge/pi-coding-agent"; import { shortcutDesc } from "../shared/mod.js"; -import type { AssistantMessage } from "@sf-run/pi-ai"; -import { isKeyRelease, Key, matchesKey, truncateToWidth, visibleWidth } from "@sf-run/pi-tui"; +import type { AssistantMessage } from "@singularity-forge/pi-ai"; +import { isKeyRelease, Key, matchesKey, truncateToWidth, visibleWidth } from "@singularity-forge/pi-tui"; import { spawn, execFileSync, type ChildProcess } from "node:child_process"; import * as fs from "node:fs"; import * as path from "node:path"; diff --git a/src/security-overrides.ts b/src/security-overrides.ts index b70b9dd61..c7c802d7a 100644 --- a/src/security-overrides.ts +++ b/src/security-overrides.ts @@ -8,7 +8,7 @@ * Precedence: env var > settings.json > built-in defaults */ -import { type SettingsManager, setAllowedCommandPrefixes } from '@sf-run/pi-coding-agent' +import { type SettingsManager, setAllowedCommandPrefixes } from '@singularity-forge/pi-coding-agent' import { setFetchAllowedUrls } from './resources/extensions/search-the-web/url-utils.js' export function applySecurityOverrides(settingsManager: SettingsManager): void { diff --git a/src/tests/app-smoke.test.ts b/src/tests/app-smoke.test.ts index 38991a196..bd2dac3f3 100644 --- a/src/tests/app-smoke.test.ts +++ b/src/tests/app-smoke.test.ts @@ -270,7 +270,7 @@ test("initResources skips copy when managed version matches current version", as test("loadStoredEnvKeys hydrates process.env from auth.json", async (t) => { const { loadStoredEnvKeys } = await import("../wizard.ts"); - const { AuthStorage } = await import("@sf-run/pi-coding-agent"); + const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); const tmp = mkdtempSync(join(tmpdir(), "sf-wizard-test-")); const authPath = join(tmp, "auth.json"); @@ -319,7 +319,7 @@ test("loadStoredEnvKeys hydrates process.env from auth.json", async (t) => { test("loadStoredEnvKeys does not overwrite existing env vars", async (t) => { const { loadStoredEnvKeys } = await import("../wizard.ts"); - const { AuthStorage } = await import("@sf-run/pi-coding-agent"); + const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); const tmp = mkdtempSync(join(tmpdir(), "sf-wizard-nooverwrite-")); const authPath = join(tmp, "auth.json"); diff --git a/src/tests/extension-discovery.test.ts b/src/tests/extension-discovery.test.ts index 9ac2d321e..3aa036e9a 100644 --- a/src/tests/extension-discovery.test.ts +++ b/src/tests/extension-discovery.test.ts @@ -47,7 +47,7 @@ describe('resolveExtensionEntries', () => { const dir = makeTempDir() t.after(() => rmSync(dir, { recursive: true, force: true })); writeFileSync(join(dir, 'package.json'), JSON.stringify({ - name: '@sf-run/cmux', + name: '@singularity-forge/cmux', pi: {} })) writeFileSync(join(dir, 'index.js'), 'export function utility() {}') diff --git a/src/tests/headless-cli-surface.test.ts b/src/tests/headless-cli-surface.test.ts index f60103e6c..511e1edea 100644 --- a/src/tests/headless-cli-surface.test.ts +++ b/src/tests/headless-cli-surface.test.ts @@ -2,7 +2,7 @@ * Tests for S02 CLI surface — --output-format, exit codes, HeadlessJsonResult, --resume. * * Uses extracted parsing logic (mirrors headless.ts) and direct imports from - * headless-types.ts / headless-events.ts to avoid transitive @sf-run/native + * headless-types.ts / headless-events.ts to avoid transitive @singularity-forge/native * import that breaks in test environment. */ diff --git a/src/tests/headless-events.test.ts b/src/tests/headless-events.test.ts index 578bc1544..08bb26a26 100644 --- a/src/tests/headless-events.test.ts +++ b/src/tests/headless-events.test.ts @@ -5,7 +5,7 @@ * the headless orchestrator to reduce stdout noise for orchestrators. * * Uses extracted parsing logic (mirrors headless.ts) to avoid - * transitive @sf-run/native import that breaks in test environment. + * transitive @singularity-forge/native import that breaks in test environment. */ import test from 'node:test' diff --git a/src/tests/integration/web-bridge-contract.test.ts b/src/tests/integration/web-bridge-contract.test.ts index 5dec0a2fd..e2785c845 100644 --- a/src/tests/integration/web-bridge-contract.test.ts +++ b/src/tests/integration/web-bridge-contract.test.ts @@ -10,7 +10,7 @@ import { StringDecoder } from "node:string_decoder"; const repoRoot = process.cwd(); const bridge = await import("../../web/bridge-service.ts"); const onboarding = await import("../../web/onboarding-service.ts"); -const { AuthStorage } = await import("@sf-run/pi-coding-agent"); +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); const bootRoute = await import("../../../web/app/api/boot/route.ts"); const commandRoute = await import("../../../web/app/api/session/command/route.ts"); const eventsRoute = await import("../../../web/app/api/session/events/route.ts"); diff --git a/src/tests/integration/web-live-interaction-contract.test.ts b/src/tests/integration/web-live-interaction-contract.test.ts index 6575ae66a..9661d7a62 100644 --- a/src/tests/integration/web-live-interaction-contract.test.ts +++ b/src/tests/integration/web-live-interaction-contract.test.ts @@ -10,7 +10,7 @@ import { StringDecoder } from "node:string_decoder"; const repoRoot = process.cwd(); const bridge = await import("../../web/bridge-service.ts"); const onboarding = await import("../../web/onboarding-service.ts"); -const { AuthStorage } = await import("@sf-run/pi-coding-agent"); +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); const commandRoute = await import("../../../web/app/api/session/command/route.ts"); const eventsRoute = await import("../../../web/app/api/session/events/route.ts"); diff --git a/src/tests/integration/web-live-state-contract.test.ts b/src/tests/integration/web-live-state-contract.test.ts index 74b489877..0849803a9 100644 --- a/src/tests/integration/web-live-state-contract.test.ts +++ b/src/tests/integration/web-live-state-contract.test.ts @@ -10,7 +10,7 @@ import { StringDecoder } from "node:string_decoder"; const repoRoot = process.cwd(); const bridge = await import("../../web/bridge-service.ts"); const onboarding = await import("../../web/onboarding-service.ts"); -const { AuthStorage } = await import("@sf-run/pi-coding-agent"); +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); const commandRoute = await import("../../../web/app/api/session/command/route.ts"); const manageRoute = await import("../../../web/app/api/session/manage/route.ts"); const eventsRoute = await import("../../../web/app/api/session/events/route.ts"); diff --git a/src/tests/integration/web-mode-assembled.test.ts b/src/tests/integration/web-mode-assembled.test.ts index 33c436ec1..34dcc4e49 100644 --- a/src/tests/integration/web-mode-assembled.test.ts +++ b/src/tests/integration/web-mode-assembled.test.ts @@ -20,7 +20,7 @@ const { dispatchBrowserSlashCommand, getBrowserSlashCommandTerminalNotice, } = await import("../../../web/lib/browser-slash-command-dispatch.ts"); -const { AuthStorage } = await import("@sf-run/pi-coding-agent"); +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); // --------------------------------------------------------------------------- // Test infrastructure (shared with web-mode-onboarding.test.ts) diff --git a/src/tests/integration/web-mode-onboarding.test.ts b/src/tests/integration/web-mode-onboarding.test.ts index 9f8b3ce79..a8ba812c2 100644 --- a/src/tests/integration/web-mode-onboarding.test.ts +++ b/src/tests/integration/web-mode-onboarding.test.ts @@ -23,7 +23,7 @@ const onboarding = await import("../../web/onboarding-service.ts"); const bootRoute = await import("../../../web/app/api/boot/route.ts"); const onboardingRoute = await import("../../../web/app/api/onboarding/route.ts"); const commandRoute = await import("../../../web/app/api/session/command/route.ts"); -const { AuthStorage } = await import("@sf-run/pi-coding-agent"); +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); class FakeRpcChild extends EventEmitter { stdin = new PassThrough(); diff --git a/src/tests/integration/web-onboarding-contract.test.ts b/src/tests/integration/web-onboarding-contract.test.ts index 539f690c5..fb89badc7 100644 --- a/src/tests/integration/web-onboarding-contract.test.ts +++ b/src/tests/integration/web-onboarding-contract.test.ts @@ -13,7 +13,7 @@ const onboarding = await import("../../web/onboarding-service.ts"); const bootRoute = await import("../../../web/app/api/boot/route.ts"); const onboardingRoute = await import("../../../web/app/api/onboarding/route.ts"); const commandRoute = await import("../../../web/app/api/session/command/route.ts"); -const { AuthStorage } = await import("@sf-run/pi-coding-agent"); +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent"); const ONBOARDING_ENV_KEYS = [ "GITHUB_TOKEN", diff --git a/src/tests/integration/web-session-parity-contract.test.ts b/src/tests/integration/web-session-parity-contract.test.ts index 68d5b59be..c08ca6334 100644 --- a/src/tests/integration/web-session-parity-contract.test.ts +++ b/src/tests/integration/web-session-parity-contract.test.ts @@ -14,7 +14,7 @@ const onboarding = await import("../../web/onboarding-service.ts") const browserRoute = await import("../../../web/app/api/session/browser/route.ts") const manageRoute = await import("../../../web/app/api/session/manage/route.ts") const gitRoute = await import("../../../web/app/api/git/route.ts") -const { AuthStorage } = await import("@sf-run/pi-coding-agent") +const { AuthStorage } = await import("@singularity-forge/pi-coding-agent") class FakeRpcChild extends EventEmitter { stdin = new PassThrough() diff --git a/src/tests/node-modules-symlink.test.ts b/src/tests/node-modules-symlink.test.ts index 9143692ce..9d858e8d7 100644 --- a/src/tests/node-modules-symlink.test.ts +++ b/src/tests/node-modules-symlink.test.ts @@ -118,7 +118,7 @@ test("pnpm layout: merged node_modules contains entries from both hoisted and in // @sinclair/ ← external scoped dep // sf-run/ ← package root // node_modules/ - // @sf-run/ ← workspace scope (NOT hoisted) + // @singularity-forge/ ← workspace scope (NOT hoisted) // @singularity-forge/ ← workspace scope (NOT hoisted) const tmp = mkdtempSync(join(tmpdir(), "sf-pnpm-merge-")); t.after(() => rmSync(tmp, { recursive: true, force: true })); @@ -163,7 +163,7 @@ test("pnpm layout: merged node_modules contains entries from both hoisted and in // Verify: workspace packages resolve through internal symlinks assert.ok(existsSync(join(agentNodeModules, "@sf")), "@sf should resolve"); - assert.ok(existsSync(join(agentNodeModules, "@sf", "pi-ai")), "@sf-run/pi-ai should resolve"); + assert.ok(existsSync(join(agentNodeModules, "@sf", "pi-ai")), "@singularity-forge/pi-ai should resolve"); assert.ok(existsSync(join(agentNodeModules, "@sf-build")), "@sf-build should resolve"); // Verify: sf-run itself is NOT symlinked (it's the package root, not a dep) diff --git a/src/tests/non-extension-library.test.ts b/src/tests/non-extension-library.test.ts index ac5c40e42..c2045d3fb 100644 --- a/src/tests/non-extension-library.test.ts +++ b/src/tests/non-extension-library.test.ts @@ -57,7 +57,7 @@ describe('isNonExtensionLibrary — defense-in-depth for #1709', () => { const libDir = join(root, 'cmux') mkdirSync(libDir) writeFileSync(join(libDir, 'package.json'), JSON.stringify({ - name: '@sf-run/cmux', + name: '@singularity-forge/cmux', description: 'cmux integration library — used by other extensions, not an extension itself', pi: {} })) diff --git a/src/tests/pi-ai-event-stream-factory.test.ts b/src/tests/pi-ai-event-stream-factory.test.ts index 8b3e6ce85..1efbf3d8e 100644 --- a/src/tests/pi-ai-event-stream-factory.test.ts +++ b/src/tests/pi-ai-event-stream-factory.test.ts @@ -3,9 +3,9 @@ import assert from "node:assert/strict"; import { AssistantMessageEventStream, createAssistantMessageEventStream, -} from "@sf-run/pi-ai"; +} from "@singularity-forge/pi-ai"; -describe("@sf-run/pi-ai event stream exports", () => { +describe("@singularity-forge/pi-ai event stream exports", () => { it("exports createAssistantMessageEventStream for package consumers", () => { assert.equal(typeof createAssistantMessageEventStream, "function"); const stream = createAssistantMessageEventStream(); diff --git a/src/tests/resolve-ts-loader.test.ts b/src/tests/resolve-ts-loader.test.ts index 172792011..35ccf02c4 100644 --- a/src/tests/resolve-ts-loader.test.ts +++ b/src/tests/resolve-ts-loader.test.ts @@ -6,7 +6,7 @@ import { load as loadWithTestLoader, resolve as resolveWithTestLoader } from ".. const nextResolve = async (specifier: string) => ({ url: specifier }) const cases = [ - ["@sf-run/pi-coding-agent", "../../packages/pi-coding-agent/src/index.ts"], + ["@singularity-forge/pi-coding-agent", "../../packages/pi-coding-agent/src/index.ts"], ] as const test("resolve-ts loader redirects pi-coding-agent bare imports to the workspace source entrypoint", async () => { diff --git a/src/tests/security-overrides.test.ts b/src/tests/security-overrides.test.ts index db05ec40b..2321b5407 100644 --- a/src/tests/security-overrides.test.ts +++ b/src/tests/security-overrides.test.ts @@ -1,6 +1,6 @@ import { describe, it, beforeEach, afterEach } from "node:test"; import assert from "node:assert/strict"; -import { SettingsManager, getAllowedCommandPrefixes, SAFE_COMMAND_PREFIXES, setAllowedCommandPrefixes } from "@sf-run/pi-coding-agent"; +import { SettingsManager, getAllowedCommandPrefixes, SAFE_COMMAND_PREFIXES, setAllowedCommandPrefixes } from "@singularity-forge/pi-coding-agent"; import { getFetchAllowedUrls, setFetchAllowedUrls } from "../resources/extensions/search-the-web/url-utils.ts"; import { applySecurityOverrides } from "../security-overrides.ts"; diff --git a/src/tests/tui-autocomplete-ghost-lines.test.ts b/src/tests/tui-autocomplete-ghost-lines.test.ts index 1b47cd0a7..bad3f03bb 100644 --- a/src/tests/tui-autocomplete-ghost-lines.test.ts +++ b/src/tests/tui-autocomplete-ghost-lines.test.ts @@ -1,6 +1,6 @@ import { describe, it } from "node:test"; import assert from "node:assert/strict"; -import { CURSOR_MARKER, TUI, type Component, type Terminal } from "@sf-run/pi-tui"; +import { CURSOR_MARKER, TUI, type Component, type Terminal } from "@singularity-forge/pi-tui"; class MockTTYTerminal implements Terminal { public writtenData: string[] = []; diff --git a/src/tests/tui-content-cursor-desync.test.ts b/src/tests/tui-content-cursor-desync.test.ts index 9acd118b7..8a5be8ac1 100644 --- a/src/tests/tui-content-cursor-desync.test.ts +++ b/src/tests/tui-content-cursor-desync.test.ts @@ -9,7 +9,7 @@ import { describe, it } from "node:test"; import assert from "node:assert/strict"; -import { CURSOR_MARKER, TUI, type Component, type Terminal } from "@sf-run/pi-tui"; +import { CURSOR_MARKER, TUI, type Component, type Terminal } from "@singularity-forge/pi-tui"; class MockTTYTerminal implements Terminal { public writtenData: string[] = []; diff --git a/src/tests/tui-non-tty-render-loop.test.ts b/src/tests/tui-non-tty-render-loop.test.ts index e627348a2..63019437b 100644 --- a/src/tests/tui-non-tty-render-loop.test.ts +++ b/src/tests/tui-non-tty-render-loop.test.ts @@ -10,9 +10,9 @@ */ import { describe, it, beforeEach } from "node:test"; import assert from "node:assert/strict"; -import { ProcessTerminal } from "@sf-run/pi-tui"; -import { TUI } from "@sf-run/pi-tui"; -import type { Terminal } from "@sf-run/pi-tui"; +import { ProcessTerminal } from "@singularity-forge/pi-tui"; +import { TUI } from "@singularity-forge/pi-tui"; +import type { Terminal } from "@singularity-forge/pi-tui"; /** * A mock terminal that tracks writes and render activity. diff --git a/src/wizard.ts b/src/wizard.ts index 9f5e1d9c2..654d11a28 100644 --- a/src/wizard.ts +++ b/src/wizard.ts @@ -1,4 +1,4 @@ -import type { AuthStorage } from '@sf-run/pi-coding-agent' +import type { AuthStorage } from '@singularity-forge/pi-coding-agent' // ─── Env hydration ──────────────────────────────────────────────────────────── diff --git a/studio/package.json b/studio/package.json index 4a79c5963..fc7e0097e 100644 --- a/studio/package.json +++ b/studio/package.json @@ -1,5 +1,5 @@ { - "name": "@sf-run/studio", + "name": "@singularity-forge/studio", "private": true, "version": "0.0.0", "type": "module", diff --git a/tsconfig.extensions.json b/tsconfig.extensions.json index 5b437888f..9c6ad1ede 100644 --- a/tsconfig.extensions.json +++ b/tsconfig.extensions.json @@ -8,13 +8,13 @@ "rootDir": ".", "baseUrl": ".", "paths": { - "@sf-run/pi-coding-agent": ["packages/pi-coding-agent/src/index.ts"], - "@sf-run/pi-ai": ["packages/pi-ai/src/index.ts"], - "@sf-run/pi-ai/*": ["packages/pi-ai/src/*.ts"], - "@sf-run/pi-agent-core": ["packages/pi-agent-core/src/index.ts"], - "@sf-run/pi-tui": ["packages/pi-tui/src/index.ts"], - "@sf-run/native": ["packages/native/src/index.ts"], - "@sf-run/native/*": ["packages/native/src/*/index.ts"], + "@singularity-forge/pi-coding-agent": ["packages/pi-coding-agent/src/index.ts"], + "@singularity-forge/pi-ai": ["packages/pi-ai/src/index.ts"], + "@singularity-forge/pi-ai/*": ["packages/pi-ai/src/*.ts"], + "@singularity-forge/pi-agent-core": ["packages/pi-agent-core/src/index.ts"], + "@singularity-forge/pi-tui": ["packages/pi-tui/src/index.ts"], + "@singularity-forge/native": ["packages/native/src/index.ts"], + "@singularity-forge/native/*": ["packages/native/src/*/index.ts"], "@singularity-forge/mcp-server": ["packages/mcp-server/src/index.ts"], "@singularity-forge/rpc-client": ["packages/rpc-client/src/index.ts"] } diff --git a/web/next.config.mjs b/web/next.config.mjs index 7537e65f9..48e709b04 100644 --- a/web/next.config.mjs +++ b/web/next.config.mjs @@ -14,7 +14,7 @@ const nextConfig = { images: { unoptimized: true, }, - serverExternalPackages: ['@sf-run/native', 'node-pty'], + serverExternalPackages: ['@singularity-forge/native', 'node-pty'], // NodeNext-style .js extension imports in src/ must resolve to .ts source. // Turbopack doesn't support extensionAlias, so builds use --webpack flag. webpack: (config, { isServer }) => { @@ -31,11 +31,11 @@ const nextConfig = { // a simple object entry so `require("node:module")` passes through. config.externals.push({ 'node:module': 'commonjs node:module', - // @sf-run/native is a native addon loaded via runtime require(). + // @singularity-forge/native is a native addon loaded via runtime require(). // serverExternalPackages handles the top-level import, but webpack // still tries to resolve the bare specifier inside files traced from // src/ (outside web/). Explicitly externalize it. - '@sf-run/native': 'commonjs @sf-run/native', + '@singularity-forge/native': 'commonjs @singularity-forge/native', }); } return config;