fix: use Gitea-compatible package scope

This commit is contained in:
jb
2026-09-01 17:53:50 -04:00
parent 118b5bee06
commit 72a1645fdb
51 changed files with 142 additions and 142 deletions
+2 -2
View File
@@ -1,7 +1,7 @@
# @_jb/pi-copy-all
# @jbcode/pi-copy-all
Pi extension that adds `/copy-all` for copying the current conversation as Markdown.
```bash
pi install npm:@_jb/pi-copy-all
pi install npm:@jbcode/pi-copy-all
```
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-copy-all",
"name": "@jbcode/pi-copy-all",
"version": "0.1.0",
"description": "Pi command for copying the current conversation as Markdown.",
"type": "module",
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-dictate",
"name": "@jbcode/pi-dictate",
"version": "0.1.0",
"description": "Pi extension for local Linux voice dictation through a Unix socket service.",
"type": "module",
+2 -2
View File
@@ -1,7 +1,7 @@
# @_jb/pi-effort-controls
# @jbcode/pi-effort-controls
Pi extension that adds `/effort` reasoning selection and `/fast` priority-mode controls.
```bash
pi install npm:@_jb/pi-effort-controls
pi install npm:@jbcode/pi-effort-controls
```
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-effort-controls",
"name": "@jbcode/pi-effort-controls",
"version": "0.1.0",
"description": "Pi commands for reasoning effort and priority-mode controls.",
"type": "module",
+2 -2
View File
@@ -1,7 +1,7 @@
# @_jb/pi-file-search
# @jbcode/pi-file-search
Pi extension providing structured `fd` file search and `rg` text search tools.
```bash
pi install npm:@_jb/pi-file-search
pi install npm:@jbcode/pi-file-search
```
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-file-search",
"name": "@jbcode/pi-file-search",
"version": "0.1.0",
"description": "Pi file and text search tools backed by fd and ripgrep.",
"type": "module",
+1 -1
View File
@@ -197,7 +197,7 @@ Status display is configured via `config.json` in the extension directory (copy
## Install
```bash
pi install npm:@_jb/pi-interactive-subagents
pi install npm:@jbcode/pi-interactive-subagents
```
## Requirements
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-interactive-subagents",
"name": "@jbcode/pi-interactive-subagents",
"version": "3.7.2",
"description": "Interactive subagents for Pi — spawn, orchestrate, and manage sub-agent sessions in Orca, Herdr or tmux.",
"type": "module",
+2 -2
View File
@@ -1,7 +1,7 @@
# @_jb/pi-lm-studio
# @jbcode/pi-lm-studio
Pi provider extension for a local LM Studio server at `http://127.0.0.1:1234/v1`.
```bash
pi install npm:@_jb/pi-lm-studio
pi install npm:@jbcode/pi-lm-studio
```
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-lm-studio",
"name": "@jbcode/pi-lm-studio",
"version": "0.1.0",
"description": "Pi provider registration for a local LM Studio server.",
"type": "module",
+1 -1
View File
@@ -13,7 +13,7 @@ A native Pi extension that coordinates trusted personal policies after workspace
Installation is a separate, user-level mutation and is **not** performed by this repository's tests:
```bash
pi install npm:@_jb/pi-native-hooks
pi install npm:@jbcode/pi-native-hooks
```
For monorepo development, use the curated link policy or load `extensions/native-hooks/extensions/pi-native-hooks/index.ts` directly.
@@ -113,7 +113,7 @@ The loader must:
7. isolate a throwing/invalid module so other policies still load, while surfacing the exact file and error; and
8. reload policies only when Pi recreates the extension on `/reload` or session replacement.
The package exposes `@_jb/pi-native-hooks/policy` type declarations. An authorized initializer writes a personal `tsconfig.json` with a path mapping to the installed package so policies can use `import type` plus `satisfies` without a runtime package import. Runtime validation remains authoritative because type checking can be skipped or stale.
The package exposes `@jbcode/pi-native-hooks/policy` type declarations. An authorized initializer writes a personal `tsconfig.json` with a path mapping to the installed package so policies can use `import type` plus `satisfies` without a runtime package import. Runtime validation remains authoritative because type checking can be skipped or stale.
Suggested personal layout:
@@ -1,4 +1,4 @@
import type { VerificationPolicy } from "@_jb/pi-native-hooks/policy";
import type { VerificationPolicy } from "@jbcode/pi-native-hooks/policy";
const manifests = new Set(["package.json", "bun.lock", "tsconfig.json"]);
const behavior = (path: string) => /^(extensions|scripts|services|skills|config)\//.test(path) || manifests.has(path);
const types = (path: string) => /\.tsx?$/.test(path) || manifests.has(path);
@@ -1,8 +1,8 @@
import type { VerificationPolicy } from "@_jb/pi-native-hooks/policy";
import type { VerificationPolicy } from "@jbcode/pi-native-hooks/policy";
const manifests = new Set(["package.json", "bun.lock", "tsconfig.json"]);
const behavior = (path: string) => /^(extensions|src|tests|examples|skills)\//.test(path) || manifests.has(path);
const types = (path: string) => /\.tsx?$/.test(path) || manifests.has(path);
export default { kind: "verification", id: "pi-native-hooks-verification", project: { matches: (project) => project.packageName === "@_jb/pi-native-hooks" }, requirements: [
export default { kind: "verification", id: "pi-native-hooks-verification", project: { matches: (project) => project.packageName === "@jbcode/pi-native-hooks" }, requirements: [
{ id: "tests", command: "bun run test", cwd: "project-root", affects: behavior },
{ id: "typecheck", command: "bun run typecheck", cwd: "project-root", affects: types },
] } satisfies VerificationPolicy;
@@ -1,4 +1,4 @@
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
const ruleIds = new Set(["typescript-no-dynamic-import-ts", "typescript-no-dynamic-import-tsx"]);
export default {
kind: "diagnostic", id: "typescript-no-dynamic-import", analyzerKeys: ["ast-grep:personal"],
@@ -1,4 +1,4 @@
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
const ruleIds = new Set(["typescript-no-non-null-assertion-ts", "typescript-no-non-null-assertion-tsx"]);
export default {
kind: "diagnostic", id: "typescript-no-non-null-assertion", analyzerKeys: ["ast-grep:personal"],
@@ -5,7 +5,7 @@
"module": "NodeNext",
"moduleResolution": "NodeNext",
"allowImportingTsExtensions": true,
"paths": { "@_jb/pi-native-hooks/policy": ["__PI_NATIVE_HOOKS_PACKAGE_ROOT__/src/policy.ts"] }
"paths": { "@jbcode/pi-native-hooks/policy": ["__PI_NATIVE_HOOKS_PACKAGE_ROOT__/src/policy.ts"] }
},
"include": ["policies/*.ts"]
}
@@ -1,4 +1,4 @@
import type { VerificationPolicy } from "@_jb/pi-native-hooks/policy";
import type { VerificationPolicy } from "@jbcode/pi-native-hooks/policy";
const manifests = new Set(["package.json", "bun.lock", "tsconfig.json"]);
const behavior = (path: string) => /^(extensions|scripts|services|skills|config)\//.test(path) || manifests.has(path);
const types = (path: string) => /\.tsx?$/.test(path) || manifests.has(path);
@@ -1,8 +1,8 @@
import type { VerificationPolicy } from "@_jb/pi-native-hooks/policy";
import type { VerificationPolicy } from "@jbcode/pi-native-hooks/policy";
const manifests = new Set(["package.json", "bun.lock", "tsconfig.json"]);
const behavior = (path: string) => /^(extensions|src|tests|examples|skills)\//.test(path) || manifests.has(path);
const types = (path: string) => /\.tsx?$/.test(path) || manifests.has(path);
export default { kind: "verification", id: "pi-native-hooks-verification", project: { matches: (project) => project.packageName === "@_jb/pi-native-hooks" }, requirements: [
export default { kind: "verification", id: "pi-native-hooks-verification", project: { matches: (project) => project.packageName === "@jbcode/pi-native-hooks" }, requirements: [
{ id: "tests", command: "bun run test", cwd: "project-root", affects: behavior },
{ id: "typecheck", command: "bun run typecheck", cwd: "project-root", affects: types },
] } satisfies VerificationPolicy;
@@ -1,4 +1,4 @@
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
const ruleIds = new Set(["typescript-no-dynamic-import-ts", "typescript-no-dynamic-import-tsx"]);
export default {
kind: "diagnostic", id: "typescript-no-dynamic-import", analyzerKeys: ["ast-grep:personal"],
@@ -1,4 +1,4 @@
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
const ruleIds = new Set(["typescript-no-non-null-assertion-ts", "typescript-no-non-null-assertion-tsx"]);
export default {
kind: "diagnostic", id: "typescript-no-non-null-assertion", analyzerKeys: ["ast-grep:personal"],
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-native-hooks",
"name": "@jbcode/pi-native-hooks",
"version": "0.1.0",
"description": "Native Pi hooks runtime for shared diagnostics and verification gates.",
"type": "module",
@@ -1,6 +1,6 @@
# Policy contracts
The authoritative declarations are exported by `@_jb/pi-native-hooks/policy` from `src/policy.ts`. Do not copy them into personal config.
The authoritative declarations are exported by `@jbcode/pi-native-hooks/policy` from `src/policy.ts`. Do not copy them into personal config.
A diagnostic policy declares `kind`, a unique `id`, analyzer keys, `appliesTo`, and a pure `evaluate`. `evaluate` receives readonly normalized snapshots and a process-free policy context. Filter findings by exact rule ID and return bounded guidance plus the supported suppression form.
@@ -9,7 +9,7 @@ A verification policy declares a project matcher and exact requirements. Each re
Use:
```ts
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
export default { /* ... */ } satisfies DiagnosticPolicy;
```
@@ -1,4 +1,4 @@
import type { VerificationPolicy } from "@_jb/pi-native-hooks/policy";
import type { VerificationPolicy } from "@jbcode/pi-native-hooks/policy";
const manifests = new Set(["package.json", "bun.lock", "tsconfig.json"]);
const behavior = (path: string) => /^(extensions|scripts|services|skills|config)\//.test(path) || manifests.has(path);
const types = (path: string) => /\.tsx?$/.test(path) || manifests.has(path);
@@ -1,8 +1,8 @@
import type { VerificationPolicy } from "@_jb/pi-native-hooks/policy";
import type { VerificationPolicy } from "@jbcode/pi-native-hooks/policy";
const manifests = new Set(["package.json", "bun.lock", "tsconfig.json"]);
const behavior = (path: string) => /^(extensions|src|tests|examples|skills)\//.test(path) || manifests.has(path);
const types = (path: string) => /\.tsx?$/.test(path) || manifests.has(path);
export default { kind: "verification", id: "pi-native-hooks-verification", project: { matches: (project) => project.packageName === "@_jb/pi-native-hooks" }, requirements: [
export default { kind: "verification", id: "pi-native-hooks-verification", project: { matches: (project) => project.packageName === "@jbcode/pi-native-hooks" }, requirements: [
{ id: "tests", command: "bun run test", cwd: "project-root", affects: behavior },
{ id: "typecheck", command: "bun run typecheck", cwd: "project-root", affects: types },
] } satisfies VerificationPolicy;
@@ -1,4 +1,4 @@
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
const ruleIds = new Set(["typescript-no-dynamic-import-ts", "typescript-no-dynamic-import-tsx"]);
export default {
kind: "diagnostic", id: "typescript-no-dynamic-import", analyzerKeys: ["ast-grep:personal"],
@@ -1,4 +1,4 @@
import type { DiagnosticPolicy } from "@_jb/pi-native-hooks/policy";
import type { DiagnosticPolicy } from "@jbcode/pi-native-hooks/policy";
const ruleIds = new Set(["typescript-no-non-null-assertion-ts", "typescript-no-non-null-assertion-tsx"]);
export default {
kind: "diagnostic", id: "typescript-no-non-null-assertion", analyzerKeys: ["ast-grep:personal"],
@@ -5,7 +5,7 @@
"module": "NodeNext",
"moduleResolution": "NodeNext",
"allowImportingTsExtensions": true,
"paths": { "@_jb/pi-native-hooks/policy": ["__PI_NATIVE_HOOKS_PACKAGE_ROOT__/src/policy.ts"] }
"paths": { "@jbcode/pi-native-hooks/policy": ["__PI_NATIVE_HOOKS_PACKAGE_ROOT__/src/policy.ts"] }
},
"include": ["policies/*.ts"]
}
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-prompt-snippets",
"name": "@jbcode/pi-prompt-snippets",
"version": "0.1.0",
"description": "Pi extension for toggling reusable per-message prompt snippets.",
"type": "module",
+2 -2
View File
@@ -1,3 +1,3 @@
# @_jb/pi-shared
# @jbcode/pi-shared
Shared runtime utilities used by the `@_jb` Pi extension packages. This is a library package and does not register a Pi extension by itself.
Shared runtime utilities used by the `@jbcode` Pi extension packages. This is a library package and does not register a Pi extension by itself.
+2 -2
View File
@@ -1,7 +1,7 @@
{
"name": "@_jb/pi-shared",
"name": "@jbcode/pi-shared",
"version": "0.1.0",
"description": "Shared runtime utilities for @_jb Pi extensions.",
"description": "Shared runtime utilities for @jbcode Pi extensions.",
"type": "module",
"license": "MIT",
"engines": { "node": ">=22.19.0" },
+2 -2
View File
@@ -1,9 +1,9 @@
# @_jb/pi-subagents
# @jbcode/pi-subagents
Pi extension for background subagents using Pi, Claude Code, and Codex backends.
```bash
pi install npm:@_jb/pi-subagents
pi install npm:@jbcode/pi-subagents
```
Do not enable it alongside another extension that registers the same subagent tools.
+2 -2
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-subagents",
"name": "@jbcode/pi-subagents",
"version": "0.1.0",
"description": "Pi extension for background subagents across Pi, Claude Code, and Codex backends.",
"type": "module",
@@ -9,7 +9,7 @@
"files": ["index.ts", "src", "docs", "README.md", "LICENSE", "!**/*.test.ts"],
"pi": { "extensions": ["./index.ts"] },
"dependencies": {
"@_jb/pi-shared": "workspace:^",
"@jbcode/pi-shared": "workspace:^",
"@anthropic-ai/claude-agent-sdk": "catalog:",
"effect": "catalog:"
},
+2 -2
View File
@@ -37,8 +37,8 @@ import {
createChildResources,
shutdownAndDisposeChildSession,
waitForChildOperation,
} from "@_jb/pi-shared/child-session";
import { createToolCallTimeoutGuard } from "@_jb/pi-shared/tool-call-timeout";
} from "@jbcode/pi-shared/child-session";
import { createToolCallTimeoutGuard } from "@jbcode/pi-shared/tool-call-timeout";
// --- Model + effort resolution -----------------------------------------------
+6 -6
View File
@@ -31,7 +31,7 @@ Hierarchical, session-local task tracking for [Pi](https://pi.dev), with atomic
Install the latest version from npm:
```bash
pi install npm:@_jb/pi-todo-herdr
pi install npm:@jbcode/pi-todo-herdr
```
Then start Pi. If Pi is already running, use `/reload` to load the extension.
@@ -39,14 +39,14 @@ Then start Pi. If Pi is already running, use `/reload` to load the extension.
To try the package for one run without installing it:
```bash
pi -e npm:@_jb/pi-todo-herdr
pi -e npm:@jbcode/pi-todo-herdr
```
Update or remove it with Pi's package commands:
```bash
pi update npm:@_jb/pi-todo-herdr
pi remove npm:@_jb/pi-todo-herdr
pi update npm:@jbcode/pi-todo-herdr
pi remove npm:@jbcode/pi-todo-herdr
```
## Usage
@@ -138,8 +138,8 @@ Development uses the monorepo's pinned Bun toolchain and shared catalog.
```bash
bun install --frozen-lockfile
bun run --filter '@_jb/pi-todo-herdr' typecheck
bun run --filter '@_jb/pi-todo-herdr' test
bun run --filter '@jbcode/pi-todo-herdr' typecheck
bun run --filter '@jbcode/pi-todo-herdr' test
(cd extensions/todo-herdr && bun pm pack --destination ../../dist)
```
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-todo-herdr",
"name": "@jbcode/pi-todo-herdr",
"version": "0.2.5",
"description": "Hierarchical task tools for Pi with a live widget and Herdr sidebar integration.",
"type": "module",
+2 -2
View File
@@ -1,7 +1,7 @@
# @_jb/pi-update
# @jbcode/pi-update
Pi extension providing controlled Pi and package update commands.
```bash
pi install npm:@_jb/pi-update
pi install npm:@jbcode/pi-update
```
+1 -1
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-update",
"name": "@jbcode/pi-update",
"version": "0.1.0",
"description": "Pi extension for controlled Pi and package updates.",
"type": "module",
+1 -1
View File
@@ -1,5 +1,5 @@
# workflow
Persisted, gated feature workflows for Pi. The private Bun workspace retains the npm package name `@_jb/pi-workflow` under the repository's scoped package convention.
Persisted, gated feature workflows for Pi. The private Bun workspace retains the npm package name `@jbcode/pi-workflow` under the repository's scoped package convention.
This workspace is currently private and must not be published. Its remaining runtime dependencies on the `_workflows` reference implementation must first be merged into this directory; see `docs/todos.md` at the repository root.
+1 -1
View File
@@ -16,7 +16,7 @@ import { Type } from "typebox";
import {
createChildResources,
resolveStandaloneChildProjectTrust,
} from "@_jb/pi-shared/child-session";
} from "@jbcode/pi-shared/child-session";
import {
runAgent,
type AgentOutcome,
+2 -2
View File
@@ -1,5 +1,5 @@
{
"name": "@_jb/pi-workflow",
"name": "@jbcode/pi-workflow",
"version": "0.1.0",
"private": true,
"description": "Private workspace for the deferred Pi workflow extension migration.",
@@ -9,7 +9,7 @@
"keywords": ["pi-package", "pi-extension", "workflow"],
"pi": { "extensions": ["./index.ts"] },
"dependencies": {
"@_jb/pi-shared": "workspace:^"
"@jbcode/pi-shared": "workspace:^"
},
"peerDependencies": {
"@earendil-works/pi-ai": "catalog:pi-peer",