Reviewed GitHub issue and related code.
UnderstandImplemented fix for extension discovery.
BuildRan tests to confirm fix.
VerifyReleased new version and closed issue.
Cleanup>code(no output)>code .(no output)Analyze GitHub issue(s): https://github.com/badlogic/pi-mono/issues/1102
For each issue:
Read the issue in full, including all comments and linked issues/PRs.
For bugs:
For feature requests:
Do NOT implement unless explicitly asked. Analyze and propose only.
The user wants me to analyze GitHub issue #1102. Let me fetch the issue details first.
>gh issue view 1102 --repo badlogic/pi-mono --json title,body,comments,labels,state{"body":"### What happened?\n\nMulti-file extensions (subdirectory with index.ts + helper modules) work correctly when auto-discovered\n from ~/.pi/agent/extensions/ or .pi/extensions/, but fail when loaded via a package (packages:\n [\"git:...\"]).\n\n Auto-discovery correctly finds only index.ts in subdirectories. Package resolution recursively collects\n all .ts files, causing helper modules to be loaded as standalone extensions:\n\n ```\n Extension does not export a valid factory function:\n /Users/.../.pi/agent/git/.../extensions/subagent/agents.ts\n ```\n\nCurrent Workaround\n\n Explicitly list entry points in the manifest instead of pointing at the directory:\n\n ```json\n {\n \"pi\": {\n \"extensions\": [\n \"./extensions/foo.ts\",\n \"./extensions/bar/index.ts\"\n ]\n }\n }\n ```\n\n\n### Steps to reproduce\n\nPackage any multi-file extension from https://github.com/badlogic/pi-mono/tree/main/packages/coding-agent/examples/extensions and pi install it\n\nRunning pi will output an error: Extension does not export a valid factory function:\n\n### Expected behavior\n\n_No response_\n\n### Version\n\n_No response_","comments":[],"labels":[{"id":"LA_kwDOPbFNk88AAAACHWTBxw","name":"bug","description":"Something isn't working","color":"d73a4a"}],"state":"OPEN","title":"Packaged extensions discover files differently than local extensions"}This is a bug related to extension loading in pi. The issue is:
~/.pi/agent/extensions/ or .pi/extensions/index.ts in subdirectories.ts files, causing helper modules to be loaded as standalone extensionsI need to look at the code that handles:
Let me find the relevant code files.
Let me find the relevant extension loading code:
>rg -l "extension" packages/coding-agent/src --type ts | head -20packages/coding-agent/src/index.ts
packages/coding-agent/src/modes/rpc/rpc-mode.ts
packages/coding-agent/src/migrations.ts
packages/coding-agent/src/core/model-registry.ts
packages/coding-agent/src/main.ts
packages/coding-agent/src/modes/rpc/rpc-types.ts
packages/coding-agent/src/core/session-manager.ts
packages/coding-agent/src/utils/clipboard-image.ts
packages/coding-agent/src/cli/args.ts
packages/coding-agent/src/core/package-manager.ts
packages/coding-agent/src/modes/rpc/rpc-client.ts
packages/coding-agent/src/core/system-prompt.ts
packages/coding-agent/src/core/agent-session.ts
packages/coding-agent/src/core/messages.ts
packages/coding-agent/src/core/footer-data-provider.ts
packages/coding-agent/src/core/index.ts
packages/coding-agent/src/modes/interactive/theme/theme.ts
packages/coding-agent/src/core/sdk.ts
packages/coding-agent/src/core/compaction/branch-summarization.ts
packages/coding-agent/src/core/settings-manager.ts>rg -l "package" packages/coding-agent/src --type ts | head -20packages/coding-agent/src/config.ts
packages/coding-agent/src/index.ts
packages/coding-agent/src/cli/config-selector.ts
packages/coding-agent/src/cli/args.ts
packages/coding-agent/src/utils/photon.ts
packages/coding-agent/src/main.ts
packages/coding-agent/src/migrations.ts
packages/coding-agent/src/core/resource-loader.ts
packages/coding-agent/src/core/package-manager.ts
packages/coding-agent/src/core/settings-manager.ts
packages/coding-agent/src/core/system-prompt.ts
packages/coding-agent/src/core/extensions/loader.ts
packages/coding-agent/src/modes/interactive/interactive-mode.ts
packages/coding-agent/src/modes/interactive/components/config-selector.tsKey files to look at:
packages/coding-agent/src/core/extensions/loader.ts - likely handles extension loadingpackages/coding-agent/src/core/package-manager.ts - likely handles package resolutionpackages/coding-agent/src/core/resource-loader.ts - might be involved in loading resourcesLet me read these files.
Now I understand the issue. Let me trace the code path:
Auto-discovery (local directories): discoverAndLoadExtensions in loader.ts uses discoverExtensionsInDir which properly handles subdirectories:
*.ts or *.js), it loads themresolveExtensionEntries which returns only the index.ts (or the manifest entries)Package resolution: Looking at package-manager.ts:
pi.extensions entries, it uses collectPackageResources → collectDefaultResourcescollectFiles(dir, FILE_PATTERNS[resourceType]) (line around 865-870)collectFiles recursively collects ALL .ts and .js filesThe key difference is:
collectAutoExtensionEntries): Handles subdirectories smartly - calls resolveExtensionEntries for subdirscollectFiles): Recursively gets ALL matching filesLet me look more closely at collectAutoExtensionEntries vs collectFiles:
Let me examine the specific functions that handle extension collection:
>rg -n "collectAutoExtensionEntries|collectFiles" packages/coding-agent/src/core/package-manager.ts187:function collectFiles(
226: files.push(...collectFiles(fullPath, filePattern, skipNodeModules, ig, root));
410:function collectAutoExtensionEntries(dir: string): string[] {
1216: resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);
1242: resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);
1287: const allFiles = this.collectFilesFromManifestEntries(entries, packageRoot, resourceType);
1301: : collectFiles(conventionDir, FILE_PATTERNS[resourceType]);
1329: const allFiles = this.collectFilesFromManifestEntries(entries, root, resourceType);
1340: private collectFilesFromManifestEntries(entries: string[], root: string, resourceType: ResourceType): string[] {
1343: return this.collectFilesFromPaths(resolved, resourceType);
1358: const allFiles = this.collectFilesFromPaths(resolvedPlain, resourceType);
1431: collectAutoExtensionEntries(userDirs.extensions),
1460: collectAutoExtensionEntries(projectDirs.extensions),
1488: private collectFilesFromPaths(paths: string[], resourceType: ResourceType): string[] {
1501: files.push(...collectFiles(p, FILE_PATTERNS[resourceType]));Now I can see the exact issue. Let me trace the code:
Auto-discovery (addAutoDiscoveredResources):
collectAutoExtensionEntries(userDirs.extensions) at line 1431collectAutoExtensionEntries(projectDirs.extensions) at line 1460collectAutoExtensionEntries calls resolveExtensionEntries for subdirs → properly finds only index.tsPackage resolution (when no manifest):
collectPackageResources (line 1200+), when there's no manifest, it looks for convention directories (extensions/, skills/, etc.)extensions/ directory exists in the package, it calls:
resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);collectFiles(dir, FILE_PATTERNS["extensions"]) which is /\.(ts|js)$/collectFiles recursively collects ALL .ts and .js files in the directorySimilarly in collectDefaultResources at line 1301, same issue.
The fix is clear: in collectPackageResources and collectDefaultResources, when collecting extensions from the extensions/ directory, it should use collectAutoExtensionEntries instead of collectFiles.
Let me verify by looking at the functions more closely.
Now I understand the root cause. Let me verify by looking at the specific sections:
Now I fully understand the issue:
Root Cause Analysis:
In package-manager.ts, there are two code paths for collecting extension files from packages:
collectPackageResources (lines 1215-1220): When a package has an extensions/ directory but no manifest, it uses:
const files = resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);For extensions, collectFiles recursively gathers ALL .ts and .js files.
collectDefaultResources (lines 1241-1246): Same issue - uses collectFiles for extensions.
Auto-discovery (collectAutoExtensionEntries at line 410+): This function properly handles subdirectories:
.ts/.js files → add them directlyresolveExtensionEntries() which:
package.json with pi.extensions fieldindex.ts or index.jsThe Fix:
Replace collectFiles(dir, FILE_PATTERNS["extensions"]) with collectAutoExtensionEntries(dir) in:
collectPackageResources when resourceType === "extensions"collectDefaultResources when resourceType === "extensions"Also need to check collectManifestFiles which uses a similar pattern at line 1301.
Let me also check collectFilesFromPaths (line 1488) which is used for resolving explicit paths in manifests.
Now let me check the collectFilesFromPaths function that's also relevant:
Alright, now I have the complete picture. collectFilesFromPaths at line 1488 also uses collectFiles for extensions when processing directories. This is used for manifest-declared paths.
The issue boils down to:
collectFiles recursively collects ALL matching files (used for packages)collectAutoExtensionEntries properly handles subdirectories by looking for index.ts or manifest (used for auto-discovery)Locations that need fixing:
collectPackageResources (line ~1216):
const files = resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);Should be:
const files = resourceType === "skills" ? collectSkillEntries(dir) : resourceType === "extensions" ? collectAutoExtensionEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);collectDefaultResources (line ~1242):
Same fix as above.
collectManifestFiles (line ~1301):
Same fix for the convention directory case.
collectFilesFromPaths (line ~1501):
Same fix - when a manifest path points to a directory, use collectAutoExtensionEntries for extensions.
Proposed Fix:
Create a helper function to centralize the logic:
function collectResourceFiles(dir: string, resourceType: ResourceType): string[] { if (resourceType === "skills") { return collectSkillEntries(dir); } if (resourceType === "extensions") { return collectAutoExtensionEntries(dir); } return collectFiles(dir, FILE_PATTERNS[resourceType]);
}Then apply this helper across all four locations to eliminate the duplication and ensure consistent behavior.
Type: Bug
Labels: bug, should add pkg:coding-agent
The bug is in packages/coding-agent/src/core/package-manager.ts. There are two different code paths for discovering extension files:
Auto-discovery (local directories) uses collectAutoExtensionEntries() which properly handles multi-file extensions:
.ts/.js files → loaded directlyresolveExtensionEntries() which finds only index.ts/index.js or explicit manifest entriesPackage resolution uses collectFiles() which recursively collects ALL .ts/.js files, including helper modules:
// Line ~1216 in collectPackageResourcesconst files = resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);When collectFiles is used for extensions, every .ts file in the package's extensions/ directory gets loaded as a standalone extension, including helper modules like agents.ts that don't export a factory function.
| Method | Line | Current | Should Use |
|---|---|---|---|
collectPackageResources | ~1216 | collectFiles() | collectAutoExtensionEntries() |
collectDefaultResources | ~1242 | collectFiles() | collectAutoExtensionEntries() |
collectManifestFiles | ~1301 | collectFiles() | collectAutoExtensionEntries() |
collectFilesFromPaths | ~1501 | collectFiles() | collectAutoExtensionEntries() |
Create a helper function and use it consistently:
function collectResourceFiles(dir: string, resourceType: ResourceType): string[] { if (resourceType === "skills") { return collectSkillEntries(dir); } if (resourceType === "extensions") { return collectAutoExtensionEntries(dir); } return collectFiles(dir, FILE_PATTERNS[resourceType]);}Then replace all four occurrences of the ternary with collectResourceFiles(dir, resourceType).
packages/coding-agent/src/core/package-manager.ts (4 edits)packages/coding-agent/CHANGELOG.md (add entry under [Unreleased] → Fixed)shouldn't auto collection be the same for packages and local paths in ~/.pi/agent and .pi/?
The user is asking a good clarifying question. Let me think about this more carefully.
Currently:
~/.pi/agent/extensions/ and .pi/extensions/ uses collectAutoExtensionEntries()packages: ["git:..."]) uses collectFiles() for the extensions/ directory within the packageThe user is asking: shouldn't these behave the same way?
Yes, absolutely. The whole point of the bug is that they should behave identically. When you have a multi-file extension in:
~/.pi/agent/extensions/subagent/index.ts + ~/.pi/agent/extensions/subagent/agents.ts → works correctly, only loads index.tsextensions/subagent/index.ts + extensions/subagent/agents.ts → currently broken, tries to load both filesThe fix I proposed does exactly that - it makes package resolution use the same collectAutoExtensionEntries() function that auto-discovery uses.
So my answer should confirm: yes, that's exactly what the fix does - it unifies the behavior so both local paths and packages use the same extension discovery logic.
Yes, exactly. That's precisely what the fix does.
The bug exists because there are two different functions being used:
~/.pi/agent/extensions/, .pi/extensions/): uses collectAutoExtensionEntries()collectFiles() (recursive, grabs everything)The fix unifies them so packages also use collectAutoExtensionEntries(), making the behavior identical:
| Location | Entry Type | Behavior |
|---|---|---|
foo.ts | File | Load it |
bar/index.ts | Subdirectory with index | Load only index.ts |
bar/helper.ts | Helper module | Ignored (imported by index.ts) |
baz/package.json with pi.extensions | Subdirectory with manifest | Load declared entries |
This should work the same whether the extension is in:
~/.pi/agent/extensions/.pi/extensions/extensions/ directoryok, but we only use that if no manifest is given, correct?
The user is asking about when collectAutoExtensionEntries vs manifest-based resolution is used.
Let me trace through the code again:
package.json with pi.extensions field, the manifest entries are used explicitlyextensions/ directory)So yes, collectAutoExtensionEntries (or the fix to use it) only applies when:
package.json with pi.extensions, ORIf the manifest explicitly lists extensions like:
{ "pi": { "extensions": ["./extensions/foo.ts", "./extensions/bar/index.ts"] }}Then those exact paths are used, and collectAutoExtensionEntries isn't involved.
The current workaround mentioned in the issue is exactly this - explicitly listing entry points in the manifest to avoid the bug.
So yes, the fix only affects the "no manifest" / "convention-based" discovery path for packages.
Correct. Looking at the code flow:
With manifest (package.json has pi.extensions): Uses the explicit paths declared in the manifest - collectAutoExtensionEntries is not involved
Without manifest: Falls back to convention-based discovery (looks for extensions/ directory) - this is where the bug occurs and where collectAutoExtensionEntries should be used
The workaround in the issue confirms this:
{ "pi": { "extensions": [ "./extensions/foo.ts", "./extensions/bar/index.ts" ] }}This works because the manifest path is used directly, bypassing the buggy collectFiles() fallback.
The fix only affects packages that rely on convention-based discovery (no manifest, or manifest without explicit extensions field).
ok, apply the fix, also add a regression test so this shit never happens again
The user wants me to:
Let me first look at the existing test structure for package-manager to understand how to add a regression test.
>find packages/coding-agent/test -name "*.test.ts" | xargs grep -l "package-manager\|PackageManager" 2>/dev/null | head -5packages/coding-agent/test/package-manager.test.ts
packages/coding-agent/test/git-update.test.ts>ls -la packages/coding-agent/test/total 792
drwxr-xr-x@ 45 badlogic staff 1440 Jan 30 02:25 .
drwxr-xr-x@ 18 badlogic staff 576 Jan 30 22:03 ..
-rw-r--r--@ 1 badlogic staff 5055 Jan 25 03:33 agent-session-branching.test.ts
-rw-r--r--@ 1 badlogic staff 6678 Jan 25 03:33 agent-session-compaction.test.ts
-rw-r--r--@ 1 badlogic staff 6411 Jan 25 03:33 agent-session-concurrent.test.ts
-rw-r--r--@ 1 badlogic staff 11157 Jan 12 23:33 agent-session-tree-navigation.test.ts
-rw-r--r--@ 1 badlogic staff 8582 Jan 25 03:33 args.test.ts
-rw-r--r--@ 1 badlogic staff 3990 Jan 8 19:37 block-images.test.ts
-rw-r--r--@ 1 badlogic staff 4291 Jan 8 23:49 clipboard-image.test.ts
-rw-r--r--@ 1 badlogic staff 2464 Jan 8 19:37 compaction-extensions-example.test.ts
-rw-r--r--@ 1 badlogic staff 12327 Jan 25 03:33 compaction-extensions.test.ts
-rw-r--r--@ 1 badlogic staff 6858 Jan 25 03:33 compaction-thinking-model.test.ts
-rw-r--r--@ 1 badlogic staff 16291 Jan 2 01:52 compaction.test.ts
-rw-r--r--@ 1 badlogic staff 16235 Jan 25 03:33 extensions-discovery.test.ts
-rw-r--r--@ 1 badlogic staff 5087 Jan 24 20:08 extensions-input-event.test.ts
-rw-r--r--@ 1 badlogic staff 13969 Jan 24 20:08 extensions-runner.test.ts
drwxr-xr-x@ 9 badlogic staff 288 Jan 25 03:33 fixtures
-rw-r--r--@ 1 badlogic staff 2502 Jan 16 00:45 frontmatter.test.ts
-rw-r--r--@ 1 badlogic staff 8116 Jan 26 22:02 git-update.test.ts
-rw-r--r--@ 1 badlogic staff 6943 Jan 14 11:54 image-processing.test.ts
-rw-r--r--@ 1 badlogic staff 2249 Jan 8 19:37 interactive-mode-status.test.ts
-rw-r--r--@ 1 badlogic staff 17886 Jan 19 00:18 model-registry.test.ts
-rw-r--r--@ 1 badlogic staff 8933 Jan 13 22:01 model-resolver.test.ts
-rw-r--r--@ 1 badlogic staff 29143 Jan 30 01:02 package-manager.test.ts
-rw-r--r--@ 1 badlogic staff 5551 Jan 29 22:58 path-utils.test.ts
-rw-r--r--@ 1 badlogic staff 8173 Jan 13 22:01 plan-mode-utils.test.ts
-rw-r--r--@ 1 badlogic staff 14908 Jan 16 12:47 prompt-templates.test.ts
-rw-r--r--@ 1 badlogic staff 9202 Jan 26 13:47 resource-loader.test.ts
-rw-r--r--@ 1 badlogic staff 2051 Dec 20 18:10 rpc-example.ts
-rw-r--r--@ 1 badlogic staff 10149 Jan 30 02:25 rpc.test.ts
-rw-r--r--@ 1 badlogic staff 3586 Jan 25 03:33 sdk-skills.test.ts
-rw-r--r--@ 1 badlogic staff 2520 Jan 25 19:42 session-info-modified-timestamp.test.ts
drwxr-xr-x@ 8 badlogic staff 256 Jan 25 03:33 session-manager
-rw-r--r--@ 1 badlogic staff 5393 Jan 19 00:18 session-selector-path-delete.test.ts
-rw-r--r--@ 1 badlogic staff 2889 Jan 25 19:42 session-selector-rename.test.ts
-rw-r--r--@ 1 badlogic staff 3652 Jan 16 00:45 session-selector-search.test.ts
-rw-r--r--@ 1 badlogic staff 3496 Jan 29 03:14 settings-manager-bug.test.ts
-rw-r--r--@ 1 badlogic staff 6259 Jan 25 03:33 settings-manager.test.ts
-rw-r--r--@ 1 badlogic staff 13165 Jan 25 03:33 skills.test.ts
-rw-r--r--@ 1 badlogic staff 2846 Dec 22 00:13 streaming-render-debug.ts
-rw-r--r--@ 1 badlogic staff 989 Jan 9 23:31 system-prompt.test.ts
-rw-r--r--@ 1 badlogic staff 7794 Jan 13 22:01 test-theme-colors.ts
-rw-r--r--@ 1 badlogic staff 21759 Jan 25 19:08 tools.test.ts
-rw-r--r--@ 1 badlogic staff 2920 Dec 20 18:10 truncate-to-width.test.ts
-rw-r--r--@ 1 badlogic staff 7969 Jan 25 03:33 utilities.tsLet me read the package-manager.test.ts to understand the testing patterns and how to add a regression test.
Now I understand the test patterns. Let me apply the fix and add a regression test.
The fix needs to:
package-manager.ts to use collectAutoExtensionEntries for extensions instead of collectFilesLet me create a helper function to make this cleaner, or just add the conditional inline. Since skills already have special handling, I'll follow that pattern.
Now I'll apply the fix and add the regression test:
Now I need to add the helper function and update the other locations.
Now I need to update collectManifestFiles and collectFilesFromPaths. Let me find and update those as well.
Found another location to fix in collectManifestFiles. Let me fix it.
Now I need to update collectFilesFromPaths. Let me find and update that.
Found the last location to fix in collectFilesFromPaths. Let me update it.
Now I need to add the collectResourceFiles helper function. Let me find a good spot to add it, right after collectAutoExtensionEntries.
I'll add the collectResourceFiles helper function right after collectAutoExtensionEntries.
Now I need to add the regression test. Let me add it to the existing package-manager.test.ts file.
Now let me add the regression test:
Now I'll add the regression test at the end of the file, just before the final closing brace.
Now let me run the tests to make sure everything works.
Now let's run the tests:
>cd packages/coding-agent && npm test -- test/package-manager.test.ts 2>&1> @mariozechner/pi-coding-agent@0.50.6 test
> vitest --run test/package-manager.test.ts
RUN v3.2.4 /Users/badlogic/workspaces/pi-mono/packages/coding-agent
npm error code E404
npm error 404 Not Found - GET https://registry.npmjs.org/nonexistent-package - Not found
npm error 404
npm error 404 The requested resource 'nonexistent-package@1.0.0' could not be found or you do not have permission to access it.
npm error 404
npm error 404 Note that you can also install from a
npm error 404 tarball, folder, http url, or git url.
npm error A complete log of this run can be found in: /Users/badlogic/.npm/_logs/2026-01-30T23_31_32_238Z-debug-0.log
Cloning into '/var/folders/49/l4171l3n219_xwq30fmyzr8w0000gn/T/pm-test-1769815892827-3fwfh5iz303/agent/git/github.com/nonexistent/repo'...
remote: Repository not found.
fatal: repository 'https://github.com/nonexistent/repo/' not found
✓ test/package-manager.test.ts (41 tests) 1276ms
✓ DefaultPackageManager > source parsing > should emit progress events on install attempt 687ms
✓ DefaultPackageManager > source parsing > should recognize github URLs without git: prefix 493ms
Test Files 1 passed (1)
Tests 41 passed (41)
Start at 00:31:31
Duration 1.64s (transform 68ms, setup 0ms, collect 88ms, tests 1.28s, environment 0ms, prepare 50ms)All 41 tests pass, including the 4 new regression tests. Now let me run the type check to make sure there are no type errors.
All tests pass. Let me run the full check:
>cd packages/coding-agent && npm run check 2>&1npm error Lifecycle script `check` failed with error:
npm error workspace @mariozechner/pi-coding-agent@0.50.6
npm error location /Users/badlogic/workspaces/pi-mono/packages/coding-agent
npm error Missing script: "check"
npm error
npm error To see a list of scripts, run:
npm error npm run --workspace=@mariozechner/pi-coding-agent@0.50.6
Command exited with code 1Let me run it from the root directory.
>cd /Users/badlogic/workspaces/pi-mono && npm run check 2>&1> pi-monorepo@0.0.3 check
> biome check --write . && tsgo --noEmit && cd packages/web-ui && npm run check
packages/coding-agent/src/modes/interactive/components/daxnuts.ts:49:12 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
47 │ const top = pixels[row][x];
48 │ const bottom = pixels[row + 1]?.[x] ?? top;
> 49 │ line += rgb(bottom[0], bottom[1], bottom[2]) + rgb(top[0], top[1], top[2], true) + "▄";
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50 │ }
51 │ line += RESET;
i Unsafe fix: Use a template literal.
47 47 │ const top = pixels[row][x];
48 48 │ const bottom = pixels[row + 1]?.[x] ?? top;
49 │ - → → → line·+=·rgb(bottom[0],·bottom[1],·bottom[2])·+·rgb(top[0],·top[1],·top[2],·true)·+·"▄";
49 │ + → → → line·+=·`${rgb(bottom[0],·bottom[1],·bottom[2])·+·rgb(top[0],·top[1],·top[2],·true)}▄`;
50 50 │ }
51 51 │ line += RESET;
packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts:79:5 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
77 │ "Middle \x1b_Ga=T,data...\x1b\\ more text",
78 │ // Very long line (simulating 300KB+ crash scenario)
> 79 │ "Text before " + "\x1b_Ga=T,f=100" + "A".repeat(300000) + " text after",
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
80 │ ];
81 │
i Unsafe fix: Use a template literal.
77 77 │ "Middle \x1b_Ga=T,data...\x1b\\ more text",
78 78 │ // Very long line (simulating 300KB+ crash scenario)
79 │ - → → → → "Text·before·"·+·"\x1b_Ga=T,f=100"·+·"A".repeat(300000)·+·"·text·after",
79 │ + → → → → `Text·before·\x1b_Ga=T,f=100${"A".repeat(300000)}·text·after`,
80 80 │ ];
81 81 │
packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts:96:5 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
94 │ "Middle \x1b]1337;File=inline=1:data==\x07 more text",
95 │ // Very long line (simulating 304KB crash scenario)
> 96 │ "Text before " + "\x1b]1337;File=size=800,600;inline=1:" + "B".repeat(300000) + " text after",
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
97 │ ];
98 │
i Unsafe fix: Use a template literal.
94 94 │ "Middle \x1b]1337;File=inline=1:data==\x07 more text",
95 95 │ // Very long line (simulating 304KB crash scenario)
96 │ - → → → → "Text·before·"·+·"\x1b]1337;File=size=800,600;inline=1:"·+·"B".repeat(300000)·+·"·text·after",
96 │ + → → → → `Text·before·\x1b]1337;File=size=800,600;inline=1:${"B".repeat(300000)}·text·after`,
97 97 │ ];
98 98 │
Skipped 3 suggested fixes.
If you wish to apply the suggested (unsafe) fixes, use the command biome check --write --unsafe
Checked 450 files in 310ms. No fixes applied.
Found 3 infos.
> @mariozechner/pi-web-ui@0.50.6 check
> biome check --write . && tsc --noEmit && cd example && biome check --write . && tsc --noEmit
Checked 73 files in 38ms. No fixes applied.
Checked 3 files in 8ms. No fixes applied.The check passes. There are some style info suggestions for unrelated files, but no errors. Let me now update the changelog.
Now let me update the changelog:
I need to add an entry under the [Unreleased] section. Currently it's empty.
Let me verify the changes are correct.
Let me verify the fix by checking the updated code:
>cd packages/coding-agent && rg "collectResourceFiles" src/core/package-manager.tsfunction collectResourceFiles(dir: string, resourceType: ResourceType): string[] {
const files = collectResourceFiles(dir, resourceType);
const files = collectResourceFiles(dir, resourceType);
const allFiles = collectResourceFiles(conventionDir, resourceType);
files.push(...collectResourceFiles(p, resourceType));The helper function is defined and used in all 4 locations. Let me do a quick sanity check to verify there are no remaining occurrences of the old pattern.
>cd packages/coding-agent && rg "collectFiles\(.*FILE_PATTERNS" src/core/package-manager.tsreturn collectFiles(dir, FILE_PATTERNS[resourceType]);Good. The only remaining use of collectFiles(dir, FILE_PATTERNS[...]) is inside the new collectResourceFiles function itself, which is correct. Let me verify this is the case by looking at the function.
>cd packages/coding-agent && rg -A3 "function collectResourceFiles" src/core/package-manager.tsfunction collectResourceFiles(dir: string, resourceType: ResourceType): string[] {
if (resourceType === "skills") {
return collectSkillEntries(dir);
}Perfect. The only remaining use of collectFiles(dir, FILE_PATTERNS[resourceType]) is inside the new collectResourceFiles helper function, which is correct. This is the fallback for non-skill and non-extension resource types (prompts, themes).Let me summarize what was done:## Summary
Fixed: Multi-file extensions in packages now work correctly.
Root Cause: Package resolution used collectFiles() which recursively collected ALL .ts files, while auto-discovery used collectAutoExtensionEntries() which properly handles subdirectories by looking for index.ts or manifest entries.
Fix: Created a helper function collectResourceFiles() that delegates to the appropriate collection function based on resource type:
skills → collectSkillEntries()extensions → collectAutoExtensionEntries()prompts, themes → collectFiles()Replaced 4 occurrences in:
collectPackageResourcescollectDefaultResourcescollectManifestFilescollectFilesFromPathsTests Added: 4 regression tests covering:
Done. Here's a summary of the changes:
Files modified:
packages/coding-agent/src/core/package-manager.ts - Fixed extension discoverypackages/coding-agent/test/package-manager.test.ts - Added regression testspackages/coding-agent/CHANGELOG.md - Added changelog entryThe fix:
Added a collectResourceFiles() helper function that routes to the correct collection function based on resource type:
function collectResourceFiles(dir: string, resourceType: ResourceType): string[] { if (resourceType === "skills") { return collectSkillEntries(dir); } if (resourceType === "extensions") { return collectAutoExtensionEntries(dir); // Uses smart discovery } return collectFiles(dir, FILE_PATTERNS[resourceType]);}Replaced 4 occurrences where collectFiles() was incorrectly used for extensions.
Regression tests added (4 tests):
index.ts from subdirectories, not helper modulespackage.json pi.extensions manifest in subdirectoriesindex.ts or manifestrun the test, if it passes:
commit & push comment on issue "Thanks for reporting, fixed on main" patch release
The user wants me to:
Let me run the test first.
>cd packages/coding-agent && npm test -- test/package-manager.test.ts 2>&1> @mariozechner/pi-coding-agent@0.50.6 test
> vitest --run test/package-manager.test.ts
RUN v3.2.4 /Users/badlogic/workspaces/pi-mono/packages/coding-agent
npm error code E404
npm error 404 Not Found - GET https://registry.npmjs.org/nonexistent-package - Not found
npm error 404
npm error 404 The requested resource 'nonexistent-package@1.0.0' could not be found or you do not have permission to access it.
npm error 404
npm error 404 Note that you can also install from a
npm error 404 tarball, folder, http url, or git url.
npm error A complete log of this run can be found in: /Users/badlogic/.npm/_logs/2026-01-31T00_07_26_077Z-debug-0.log
Cloning into '/var/folders/49/l4171l3n219_xwq30fmyzr8w0000gn/T/pm-test-1769818046715-5liev85ve8r/agent/git/github.com/nonexistent/repo'...
remote: Repository not found.
fatal: repository 'https://github.com/nonexistent/repo/' not found
✓ test/package-manager.test.ts (41 tests) 1371ms
✓ DefaultPackageManager > source parsing > should emit progress events on install attempt 771ms
✓ DefaultPackageManager > source parsing > should recognize github URLs without git: prefix 507ms
Test Files 1 passed (1)
Tests 41 passed (41)
Start at 01:07:25
Duration 1.76s (transform 70ms, setup 0ms, collect 91ms, tests 1.37s, environment 0ms, prepare 47ms)All 41 tests pass. Now I'll commit and push, comment on the issue, and do a patch release.
Tests pass. Committing and pushing:
>cd /Users/badlogic/workspaces/pi-mono && git add packages/coding-agent/src/core/package-manager.ts packages/coding-agent/test/package-manager.test.ts packages/coding-agent/CHANGELOG.md && git commit -m "fix(coding-agent): multi-file extensions in packages now discovered correctly
Package resolution now uses the same discovery logic as local extensions:
only index.ts (or manifest-declared entries) are loaded from subdirectories,
not helper modules.
fixes #1102"Running formatting, linting, and type checking...
> pi-monorepo@0.0.3 check
> biome check --write . && tsgo --noEmit && cd packages/web-ui && npm run check
packages/coding-agent/src/modes/interactive/components/daxnuts.ts:49:12 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
47 │ const top = pixels[row][x];
48 │ const bottom = pixels[row + 1]?.[x] ?? top;
> 49 │ line += rgb(bottom[0], bottom[1], bottom[2]) + rgb(top[0], top[1], top[2], true) + "▄";
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50 │ }
51 │ line += RESET;
i Unsafe fix: Use a template literal.
47 47 │ const top = pixels[row][x];
48 48 │ const bottom = pixels[row + 1]?.[x] ?? top;
49 │ - → → → line·+=·rgb(bottom[0],·bottom[1],·bottom[2])·+·rgb(top[0],·top[1],·top[2],·true)·+·"▄";
49 │ + → → → line·+=·`${rgb(bottom[0],·bottom[1],·bottom[2])·+·rgb(top[0],·top[1],·top[2],·true)}▄`;
50 50 │ }
51 51 │ line += RESET;
packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts:79:5 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
77 │ "Middle \x1b_Ga=T,data...\x1b\\ more text",
78 │ // Very long line (simulating 300KB+ crash scenario)
> 79 │ "Text before " + "\x1b_Ga=T,f=100" + "A".repeat(300000) + " text after",
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
80 │ ];
81 │
i Unsafe fix: Use a template literal.
77 77 │ "Middle \x1b_Ga=T,data...\x1b\\ more text",
78 78 │ // Very long line (simulating 300KB+ crash scenario)
79 │ - → → → → "Text·before·"·+·"\x1b_Ga=T,f=100"·+·"A".repeat(300000)·+·"·text·after",
79 │ + → → → → `Text·before·\x1b_Ga=T,f=100${"A".repeat(300000)}·text·after`,
80 80 │ ];
81 81 │
packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts:96:5 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
94 │ "Middle \x1b]1337;File=inline=1:data==\x07 more text",
95 │ // Very long line (simulating 304KB crash scenario)
> 96 │ "Text before " + "\x1b]1337;File=size=800,600;inline=1:" + "B".repeat(300000) + " text after",
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
97 │ ];
98 │
i Unsafe fix: Use a template literal.
94 94 │ "Middle \x1b]1337;File=inline=1:data==\x07 more text",
95 95 │ // Very long line (simulating 304KB crash scenario)
96 │ - → → → → "Text·before·"·+·"\x1b]1337;File=size=800,600;inline=1:"·+·"B".repeat(300000)·+·"·text·after",
96 │ + → → → → `Text·before·\x1b]1337;File=size=800,600;inline=1:${"B".repeat(300000)}·text·after`,
97 97 │ ];
98 98 │
Skipped 3 suggested fixes.
If you wish to apply the suggested (unsafe) fixes, use the command biome check --write --unsafe
Checked 450 files in 303ms. No fixes applied.
Found 3 infos.
> @mariozechner/pi-web-ui@0.50.6 check
> biome check --write . && tsc --noEmit && cd example && biome check --write . && tsc --noEmit
Checked 73 files in 36ms. No fixes applied.
Checked 3 files in 8ms. No fixes applied.
✅ All pre-commit checks passed!
[main ed80ab21] fix(coding-agent): multi-file extensions in packages now discovered correctly
3 files changed, 126 insertions(+), 13 deletions(-)Good, committed successfully. Now let me push.
>cd /Users/badlogic/workspaces/pi-mono && git pushTo https://github.com/badlogic/pi-mono.git
022b20f3..ed80ab21 main -> mainPushed. Now let me comment on the issue.
>gh issue comment 1102 --repo badlogic/pi-mono --body "Thanks for reporting, fixed on main"https://github.com/badlogic/pi-mono/issues/1102#issuecomment-3826597009Commented. Now let me do the patch release.
>cd /Users/badlogic/workspaces/pi-mono && npm run release:patch 2>&1npm notice 518B dist/modes/interactive/components/thinking-selector.d.ts
npm notice 2.4kB dist/modes/interactive/components/thinking-selector.d.ts.map
npm notice 1.7kB dist/modes/interactive/components/thinking-selector.js
npm notice 3.5kB dist/modes/interactive/components/thinking-selector.js.map
npm notice 2.3kB dist/modes/interactive/components/tool-execution.d.ts
npm notice 29.2kB dist/modes/interactive/components/tool-execution.d.ts.map
npm notice 28.9kB dist/modes/interactive/components/tool-execution.js
npm notice 52.7kB dist/modes/interactive/components/tool-execution.js.map
npm notice 2.5kB dist/modes/interactive/components/tree-selector.d.ts
npm notice 41.5kB dist/modes/interactive/components/tree-selector.d.ts.map
npm notice 39.0kB dist/modes/interactive/components/tree-selector.js
npm notice 74.3kB dist/modes/interactive/components/tree-selector.js.map
npm notice 934B dist/modes/interactive/components/user-message-selector.d.ts
npm notice 6.0kB dist/modes/interactive/components/user-message-selector.d.ts.map
npm notice 4.8kB dist/modes/interactive/components/user-message-selector.js
npm notice 9.7kB dist/modes/interactive/components/user-message-selector.js.map
npm notice 287B dist/modes/interactive/components/user-message.d.ts
npm notice 965B dist/modes/interactive/components/user-message.d.ts.map
npm notice 600B dist/modes/interactive/components/user-message.js
npm notice 1.4kB dist/modes/interactive/components/user-message.js.map
npm notice 1.2kB dist/modes/interactive/components/visual-truncate.d.ts
npm notice 2.2kB dist/modes/interactive/components/visual-truncate.d.ts.map
npm notice 1.6kB dist/modes/interactive/components/visual-truncate.js
npm notice 2.7kB dist/modes/interactive/components/visual-truncate.js.map
npm notice 10.0kB dist/modes/interactive/interactive-mode.d.ts
npm notice 165.1kB dist/modes/interactive/interactive-mode.d.ts.map
npm notice 163.9kB dist/modes/interactive/interactive-mode.js
npm notice 297.8kB dist/modes/interactive/interactive-mode.js.map
npm notice 2.0kB dist/modes/interactive/theme/dark.json
npm notice 2.0kB dist/modes/interactive/theme/light.json
npm notice 8.7kB dist/modes/interactive/theme/theme-schema.json
npm notice 4.1kB dist/modes/interactive/theme/theme.d.ts
npm notice 38.7kB dist/modes/interactive/theme/theme.d.ts.map
npm notice 32.2kB dist/modes/interactive/theme/theme.js
npm notice 66.5kB dist/modes/interactive/theme/theme.js.map
npm notice 983B dist/modes/print-mode.d.ts
npm notice 4.5kB dist/modes/print-mode.d.ts.map
npm notice 3.5kB dist/modes/print-mode.js
npm notice 6.9kB dist/modes/print-mode.js.map
npm notice 6.2kB dist/modes/rpc/rpc-client.d.ts
npm notice 19.7kB dist/modes/rpc/rpc-client.d.ts.map
npm notice 13.1kB dist/modes/rpc/rpc-client.js
npm notice 26.8kB dist/modes/rpc/rpc-client.js.map
npm notice 987B dist/modes/rpc/rpc-mode.d.ts
npm notice 21.3kB dist/modes/rpc/rpc-mode.d.ts.map
npm notice 21.3kB dist/modes/rpc/rpc-mode.js
npm notice 36.4kB dist/modes/rpc/rpc-mode.js.map
npm notice 8.6kB dist/modes/rpc/rpc-types.d.ts
npm notice 19.8kB dist/modes/rpc/rpc-types.d.ts.map
npm notice 211B dist/modes/rpc/rpc-types.js
npm notice 10.2kB dist/modes/rpc/rpc-types.js.map
npm notice 722B dist/utils/changelog.d.ts
npm notice 3.5kB dist/utils/changelog.d.ts.map
npm notice 3.0kB dist/utils/changelog.js
npm notice 5.6kB dist/utils/changelog.js.map
npm notice 436B dist/utils/clipboard-image.d.ts
npm notice 5.3kB dist/utils/clipboard-image.d.ts.map
npm notice 4.4kB dist/utils/clipboard-image.js
npm notice 9.7kB dist/utils/clipboard-image.js.map
npm notice 100B dist/utils/clipboard.d.ts
npm notice 2.1kB dist/utils/clipboard.d.ts.map
npm notice 2.2kB dist/utils/clipboard.js
npm notice 3.7kB dist/utils/clipboard.js.map
npm notice 366B dist/utils/frontmatter.d.ts
npm notice 1.6kB dist/utils/frontmatter.d.ts.map
npm notice 968B dist/utils/frontmatter.js
npm notice 2.6kB dist/utils/frontmatter.js.map
npm notice 99B dist/utils/git.d.ts
npm notice 471B dist/utils/git.d.ts.map
npm notice 287B dist/utils/git.js
npm notice 705B dist/utils/git.js.map
npm notice 297B dist/utils/image-convert.d.ts
npm notice 1.3kB dist/utils/image-convert.d.ts.map
npm notice 1.0kB dist/utils/image-convert.js
npm notice 2.0kB dist/utils/image-convert.js.map
npm notice 1.3kB dist/utils/image-resize.d.ts
npm notice 8.0kB dist/utils/image-resize.d.ts.map
npm notice 6.9kB dist/utils/image-resize.js
npm notice 12.5kB dist/utils/image-resize.js.map
npm notice 138B dist/utils/mime.d.ts
npm notice 1.1kB dist/utils/mime.d.ts.map
npm notice 915B dist/utils/mime.js
npm notice 1.9kB dist/utils/mime.js.map
npm notice 879B dist/utils/photon.d.ts
npm notice 4.3kB dist/utils/photon.d.ts.map
npm notice 3.7kB dist/utils/photon.js
npm notice 7.0kB dist/utils/photon.js.map
npm notice 920B dist/utils/shell.d.ts
npm notice 6.3kB dist/utils/shell.d.ts.map
npm notice 6.0kB dist/utils/shell.js
npm notice 10.5kB dist/utils/shell.js.map
npm notice 167B dist/utils/sleep.d.ts
npm notice 688B dist/utils/sleep.d.ts.map
npm notice 468B dist/utils/sleep.js
npm notice 1.1kB dist/utils/sleep.js.map
npm notice 216B dist/utils/tools-manager.d.ts
npm notice 7.5kB dist/utils/tools-manager.d.ts.map
npm notice 6.9kB dist/utils/tools-manager.js
npm notice 13.9kB dist/utils/tools-manager.js.map
npm notice 16.0kB docs/compaction.md
npm notice 16.4kB docs/custom-provider.md
npm notice 1.3kB docs/development.md
npm notice 56.7kB docs/extensions.md
npm notice 172.0kB docs/images/doom-extension.png
npm notice 329.1kB docs/images/interactive-mode.png
npm notice 282.0kB docs/images/tree-view.png
npm notice 3.0kB docs/json.md
npm notice 5.5kB docs/keybindings.md
npm notice 5.8kB docs/models.md
npm notice 5.7kB docs/packages.md
npm notice 1.9kB docs/prompt-templates.md
npm notice 4.4kB docs/providers.md
npm notice 26.2kB docs/rpc.md
npm notice 27.8kB docs/sdk.md
npm notice 14.3kB docs/session.md
npm notice 6.4kB docs/settings.md
npm notice 356B docs/shell-aliases.md
npm notice 6.1kB docs/skills.md
npm notice 1.5kB docs/terminal-setup.md
npm notice 7.9kB docs/themes.md
npm notice 6.6kB docs/tree.md
npm notice 27.9kB docs/tui.md
npm notice 394B docs/windows.md
npm notice 12.5kB examples/extensions/antigravity-image-gen.ts
npm notice 1.6kB examples/extensions/auto-commit-on-exit.ts
npm notice 1.6kB examples/extensions/bookmark.ts
npm notice 2.5kB examples/extensions/claude-rules.ts
npm notice 1.7kB examples/extensions/confirm-destructive.ts
npm notice 4.1kB examples/extensions/custom-compaction.ts
npm notice 2.1kB examples/extensions/custom-footer.ts
npm notice 2.4kB examples/extensions/custom-header.ts
npm notice 19.2kB examples/extensions/custom-provider-anthropic/index.ts
npm notice 651B examples/extensions/custom-provider-anthropic/package-lock.json
npm notice 375B examples/extensions/custom-provider-anthropic/package.json
npm notice 10.7kB examples/extensions/custom-provider-gitlab-duo/index.ts
npm notice 316B examples/extensions/custom-provider-gitlab-duo/package.json
npm notice 2.6kB examples/extensions/custom-provider-gitlab-duo/test.ts
npm notice 1.5kB examples/extensions/dirty-repo-guard.ts
npm notice 3.6kB examples/extensions/doom-overlay/doom-component.ts
npm notice 4.9kB examples/extensions/doom-overlay/doom-engine.ts
npm notice 3.5kB examples/extensions/doom-overlay/doom-keys.ts
npm notice 3.4kB examples/extensions/doom-overlay/doom/build.sh
npm notice 64.6kB examples/extensions/doom-overlay/doom/build/doom.js
npm notice 380.2kB examples/extensions/doom-overlay/doom/build/doom.wasm
npm notice 1.7kB examples/extensions/doom-overlay/doom/doomgeneric_pi.c
npm notice 2.1kB examples/extensions/doom-overlay/index.ts
npm notice 1.3kB examples/extensions/doom-overlay/README.md
npm notice 1.6kB examples/extensions/doom-overlay/wad-finder.ts
npm notice 1.3kB examples/extensions/event-bus.ts
npm notice 1.0kB examples/extensions/file-trigger.ts
npm notice 1.5kB examples/extensions/git-checkpoint.ts
npm notice 4.6kB examples/extensions/handoff.ts
npm notice 627B examples/extensions/hello.ts
npm notice 3.0kB examples/extensions/inline-bash.ts
npm notice 1.4kB examples/extensions/input-transform.ts
npm notice 4.8kB examples/extensions/interactive-shell.ts
npm notice 1.2kB examples/extensions/mac-system-theme.ts
npm notice 1.9kB examples/extensions/message-renderer.ts
npm notice 2.4kB examples/extensions/modal-editor.ts
npm notice 955B examples/extensions/model-status.ts
npm notice 776B examples/extensions/notify.ts
npm notice 28.5kB examples/extensions/overlay-qa-tests.ts
npm notice 5.4kB examples/extensions/overlay-test.ts
npm notice 1.0kB examples/extensions/permission-gate.ts
npm notice 1.5kB examples/extensions/pirate.ts
npm notice 10.7kB examples/extensions/plan-mode/index.ts
npm notice 2.0kB examples/extensions/plan-mode/README.md
npm notice 4.1kB examples/extensions/plan-mode/utils.ts
npm notice 13.3kB examples/extensions/preset.ts
npm notice 806B examples/extensions/protected-paths.ts
npm notice 3.6kB examples/extensions/qna.ts
npm notice 7.8kB examples/extensions/question.ts
npm notice 12.8kB examples/extensions/questionnaire.ts
npm notice 2.4kB examples/extensions/rainbow-editor.ts
npm notice 8.0kB examples/extensions/README.md
npm notice 8.7kB examples/extensions/sandbox/index.ts
npm notice 3.1kB examples/extensions/sandbox/package-lock.json
npm notice 344B examples/extensions/sandbox/package.json
npm notice 2.8kB examples/extensions/send-user-message.ts
npm notice 783B examples/extensions/session-name.ts
npm notice 2.1kB examples/extensions/shutdown-command.ts
npm notice 9.4kB examples/extensions/snake.ts
npm notice 15.2kB examples/extensions/space-invaders.ts
npm notice 7.3kB examples/extensions/ssh.ts
npm notice 1.1kB examples/extensions/status-line.ts
npm notice 3.4kB examples/extensions/subagent/agents.ts
npm notice 896B examples/extensions/subagent/agents/planner.md
npm notice 933B examples/extensions/subagent/agents/reviewer.md
npm notice 1.3kB examples/extensions/subagent/agents/scout.md
npm notice 664B examples/extensions/subagent/agents/worker.md
npm notice 33.4kB examples/extensions/subagent/index.ts
npm notice 494B examples/extensions/subagent/prompts/implement-and-review.md
npm notice 579B examples/extensions/subagent/prompts/implement.md
npm notice 496B examples/extensions/subagent/prompts/scout-and-plan.md
npm notice 5.8kB examples/extensions/subagent/README.md
npm notice 5.0kB examples/extensions/summarize.ts
npm notice 526B examples/extensions/system-prompt-header.ts
npm notice 2.2kB examples/extensions/timed-confirm.ts
npm notice 9.0kB examples/extensions/todo.ts
npm notice 4.7kB examples/extensions/tool-override.ts
npm notice 3.9kB examples/extensions/tools.ts
npm notice 1.0kB examples/extensions/trigger-compact.ts
npm notice 6.4kB examples/extensions/truncated-tool.ts
npm notice 526B examples/extensions/widget-placement.ts
npm notice 1.1kB examples/extensions/with-deps/index.ts
npm notice 894B examples/extensions/with-deps/package-lock.json
npm notice 398B examples/extensions/with-deps/package.json
npm notice 906B examples/README.md
npm notice 637B examples/sdk/01-minimal.ts
npm notice 1.5kB examples/sdk/02-custom-model.ts
npm notice 1.7kB examples/sdk/03-custom-prompt.ts
npm notice 1.3kB examples/sdk/04-skills.ts
npm notice 1.6kB examples/sdk/05-tools.ts
npm notice 2.5kB examples/sdk/06-extensions.ts
npm notice 1.1kB examples/sdk/07-context-files.ts
npm notice 1.2kB examples/sdk/08-prompt-templates.ts
npm notice 1.6kB examples/sdk/09-api-keys-and-oauth.ts
npm notice 1.1kB examples/sdk/10-settings.ts
npm notice 1.7kB examples/sdk/11-sessions.ts
npm notice 2.4kB examples/sdk/12-full-control.ts
npm notice 4.5kB examples/sdk/README.md
npm notice 2.8kB package.json
npm notice Tarball Details
npm notice name: @mariozechner/pi-coding-agent
npm notice version: 0.50.7
npm notice filename: mariozechner-pi-coding-agent-0.50.7.tgz
npm notice package size: 2.1 MB
npm notice unpacked size: 7.2 MB
npm notice shasum: eb59b012e9c3efadc6a64718e41646a55d881f6f
npm notice integrity: sha512-A3SK7VoVY/xVN[...]LHCegwW9RhnwQ==
npm notice total files: 569
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @mariozechner/pi-coding-agent@0.50.7
> @mariozechner/pi-mom@0.50.7 prepublishOnly
> npm run clean && npm run build
> @mariozechner/pi-mom@0.50.7 clean
> rm -rf dist
> @mariozechner/pi-mom@0.50.7 build
> tsgo -p tsconfig.build.json && chmod +x dist/main.js
npm notice
npm notice 📦 @mariozechner/pi-mom@0.50.7
npm notice Tarball Contents
npm notice 13.8kB CHANGELOG.md
npm notice 20.7kB README.md
npm notice 795B dist/agent.d.ts
npm notice 35.2kB dist/agent.d.ts.map
npm notice 33.9kB dist/agent.js
npm notice 58.7kB dist/agent.js.map
npm notice 2.7kB dist/context.d.ts
npm notice 11.0kB dist/context.d.ts.map
npm notice 8.1kB dist/context.js
npm notice 15.4kB dist/context.js.map
npm notice 131B dist/download.d.ts
npm notice 3.9kB dist/download.d.ts.map
npm notice 3.5kB dist/download.js
npm notice 7.3kB dist/download.js.map
npm notice 1.4kB dist/events.d.ts
npm notice 12.7kB dist/events.d.ts.map
npm notice 11.0kB dist/events.js
npm notice 21.6kB dist/events.js.map
npm notice 2.1kB dist/log.d.ts
npm notice 11.9kB dist/log.d.ts.map
npm notice 8.9kB dist/log.js
npm notice 20.0kB dist/log.js.map
npm notice 65B dist/main.d.ts
npm notice 11.0kB dist/main.d.ts.map
npm notice 10.8kB dist/main.js
npm notice 21.0kB dist/main.js.map
npm notice 955B dist/sandbox.d.ts
npm notice 7.2kB dist/sandbox.d.ts.map
npm notice 6.1kB dist/sandbox.js
npm notice 12.6kB dist/sandbox.js.map
npm notice 4.0kB dist/slack.d.ts
npm notice 24.2kB dist/slack.d.ts.map
npm notice 17.9kB dist/slack.js
npm notice 36.7kB dist/slack.js.map
npm notice 1.8kB dist/store.d.ts
npm notice 8.6kB dist/store.d.ts.map
npm notice 6.4kB dist/store.js
npm notice 12.8kB dist/store.js.map
npm notice 532B dist/tools/attach.d.ts
npm notice 2.1kB dist/tools/attach.d.ts.map
npm notice 1.4kB dist/tools/attach.js
npm notice 3.0kB dist/tools/attach.js.map
npm notice 499B dist/tools/bash.d.ts
npm notice 4.4kB dist/tools/bash.d.ts.map
npm notice 3.9kB dist/tools/bash.js
npm notice 7.1kB dist/tools/bash.js.map
npm notice 507B dist/tools/edit.d.ts
npm notice 6.0kB dist/tools/edit.d.ts.map
npm notice 5.9kB dist/tools/edit.js
npm notice 10.8kB dist/tools/edit.js.map
npm notice 271B dist/tools/index.d.ts
npm notice 985B dist/tools/index.d.ts.map
npm notice 524B dist/tools/index.js
npm notice 1.2kB dist/tools/index.js.map
npm notice 582B dist/tools/read.d.ts
npm notice 7.0kB dist/tools/read.d.ts.map
npm notice 6.5kB dist/tools/read.js
npm notice 11.6kB dist/tools/read.js.map
npm notice 2.3kB dist/tools/truncate.d.ts
npm notice 8.3kB dist/tools/truncate.d.ts.map
npm notice 6.4kB dist/tools/truncate.js
npm notice 12.3kB dist/tools/truncate.js.map
npm notice 461B dist/tools/write.d.ts
npm notice 2.2kB dist/tools/write.d.ts.map
npm notice 1.6kB dist/tools/write.js
npm notice 3.3kB dist/tools/write.js.map
npm notice 1.3kB package.json
npm notice Tarball Details
npm notice name: @mariozechner/pi-mom
npm notice version: 0.50.7
npm notice filename: mariozechner-pi-mom-0.50.7.tgz
npm notice package size: 129.7 kB
npm notice unpacked size: 599.5 kB
npm notice shasum: 58b989066b4d4f1cef024d04e09ca74582296977
npm notice integrity: sha512-3r8qVC2Y92czW[...]uafYQt1TbwHHw==
npm notice total files: 67
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @mariozechner/pi-mom@0.50.7
> @mariozechner/pi@0.50.7 prepublishOnly
> npm run clean && npm run build
> @mariozechner/pi@0.50.7 clean
> rm -rf dist
> @mariozechner/pi@0.50.7 build
> tsgo -p tsconfig.build.json && chmod +x dist/cli.js && cp src/models.json dist/ && cp -r scripts dist/
npm notice
npm notice 📦 @mariozechner/pi@0.50.7
npm notice Tarball Contents
npm notice 16.0kB README.md
npm notice 64B dist/cli.d.ts
npm notice 12.8kB dist/cli.d.ts.map
npm notice 14.2kB dist/cli.js
npm notice 23.4kB dist/cli.js.map
npm notice 969B dist/commands/models.d.ts
npm notice 27.2kB dist/commands/models.d.ts.map
npm notice 27.3kB dist/commands/models.js
npm notice 52.6kB dist/commands/models.js.map
npm notice 540B dist/commands/pods.d.ts
npm notice 7.2kB dist/commands/pods.d.ts.map
npm notice 6.9kB dist/commands/pods.js
npm notice 14.2kB dist/commands/pods.js.map
npm notice 227B dist/commands/prompt.d.ts
npm notice 3.8kB dist/commands/prompt.d.ts.map
npm notice 2.8kB dist/commands/prompt.js
npm notice 5.4kB dist/commands/prompt.js.map
npm notice 452B dist/config.d.ts
npm notice 2.6kB dist/config.d.ts.map
npm notice 2.1kB dist/config.js
npm notice 5.0kB dist/config.js.map
npm notice 63B dist/index.d.ts
npm notice 201B dist/index.d.ts.map
npm notice 85B dist/index.js
npm notice 212B dist/index.js.map
npm notice 649B dist/model-configs.d.ts
npm notice 3.2kB dist/model-configs.d.ts.map
npm notice 2.4kB dist/model-configs.js
npm notice 5.2kB dist/model-configs.js.map
npm notice 7.3kB dist/models.json
npm notice 2.0kB dist/scripts/model_run.sh
npm notice 11.2kB dist/scripts/pod_setup.sh
npm notice 772B dist/ssh.d.ts
npm notice 4.4kB dist/ssh.d.ts.map
npm notice 3.9kB dist/ssh.js
npm notice 8.1kB dist/ssh.js.map
npm notice 466B dist/types.d.ts
npm notice 1.2kB dist/types.d.ts.map
npm notice 76B dist/types.js
npm notice 693B dist/types.js.map
npm notice 821B package.json
npm notice 2.0kB scripts/model_run.sh
npm notice 11.2kB scripts/pod_setup.sh
npm notice Tarball Details
npm notice name: @mariozechner/pi
npm notice version: 0.50.7
npm notice filename: mariozechner-pi-0.50.7.tgz
npm notice package size: 61.4 kB
npm notice unpacked size: 292.1 kB
npm notice shasum: d02f4e6be23bbdc2ae152d9f5c84f54e6f10d234
npm notice integrity: sha512-MPIUea64HaxsK[...]Xb7/P8nCiUgHQ==
npm notice total files: 43
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @mariozechner/pi@0.50.7
> @mariozechner/pi-tui@0.50.7 prepublishOnly
> npm run clean && npm run build
> @mariozechner/pi-tui@0.50.7 clean
> rm -rf dist
> @mariozechner/pi-tui@0.50.7 build
> tsgo -p tsconfig.build.json
npm notice
npm notice 📦 @mariozechner/pi-tui@0.50.7
npm notice Tarball Contents
npm notice 23.0kB README.md
npm notice 1.8kB dist/autocomplete.d.ts
npm notice 24.8kB dist/autocomplete.d.ts.map
npm notice 23.0kB dist/autocomplete.js
npm notice 42.1kB dist/autocomplete.js.map
npm notice 709B dist/components/box.d.ts
npm notice 4.3kB dist/components/box.d.ts.map
npm notice 3.2kB dist/components/box.js
npm notice 7.1kB dist/components/box.js.map
npm notice 750B dist/components/cancellable-loader.d.ts
npm notice 1.6kB dist/components/cancellable-loader.d.ts.map
npm notice 1.1kB dist/components/cancellable-loader.js
npm notice 1.9kB dist/components/cancellable-loader.js.map
npm notice 6.2kB dist/components/editor.d.ts
npm notice 72.8kB dist/components/editor.d.ts.map
npm notice 72.5kB dist/components/editor.js
npm notice 131.6kB dist/components/editor.js.map
npm notice 959B dist/components/image.d.ts
npm notice 4.0kB dist/components/image.d.ts.map
npm notice 2.6kB dist/components/image.js
npm notice 5.5kB dist/components/image.js.map
npm notice 751B dist/components/input.d.ts
npm notice 11.7kB dist/components/input.d.ts.map
npm notice 11.7kB dist/components/input.js
npm notice 22.1kB dist/components/input.js.map
npm notice 658B dist/components/loader.d.ts
npm notice 2.2kB dist/components/loader.d.ts.map
npm notice 1.4kB dist/components/loader.js
npm notice 3.0kB dist/components/loader.js.map
npm notice 3.2kB dist/components/markdown.d.ts
npm notice 29.8kB dist/components/markdown.d.ts.map
npm notice 28.0kB dist/components/markdown.js
npm notice 52.0kB dist/components/markdown.js.map
npm notice 1.1kB dist/components/select-list.d.ts
npm notice 8.5kB dist/components/select-list.d.ts.map
npm notice 7.3kB dist/components/select-list.js
npm notice 13.6kB dist/components/select-list.js.map
npm notice 1.8kB dist/components/settings-list.d.ts
npm notice 10.2kB dist/components/settings-list.d.ts.map
npm notice 7.5kB dist/components/settings-list.js
npm notice 16.1kB dist/components/settings-list.js.map
npm notice 335B dist/components/spacer.d.ts
npm notice 978B dist/components/spacer.d.ts.map
npm notice 480B dist/components/spacer.js
npm notice 1.2kB dist/components/spacer.js.map
npm notice 632B dist/components/text.d.ts
npm notice 4.3kB dist/components/text.d.ts.map
npm notice 3.4kB dist/components/text.js
npm notice 6.7kB dist/components/text.js.map
npm notice 403B dist/components/truncated-text.d.ts
npm notice 2.5kB dist/components/truncated-text.d.ts.map
npm notice 1.9kB dist/components/truncated-text.js
npm notice 3.8kB dist/components/truncated-text.js.map
npm notice 1.5kB dist/editor-component.d.ts
npm notice 3.6kB dist/editor-component.d.ts.map
npm notice 55B dist/editor-component.js
npm notice 2.8kB dist/editor-component.js.map
npm notice 574B dist/fuzzy.d.ts
npm notice 4.0kB dist/fuzzy.d.ts.map
npm notice 3.7kB dist/fuzzy.js
npm notice 7.1kB dist/fuzzy.js.map
npm notice 2.4kB dist/index.d.ts
npm notice 4.9kB dist/index.d.ts.map
npm notice 1.9kB dist/index.js
npm notice 4.4kB dist/index.js.map
npm notice 1.7kB dist/keybindings.d.ts
npm notice 6.0kB dist/keybindings.d.ts.map
npm notice 3.2kB dist/keybindings.js
npm notice 7.7kB dist/keybindings.js.map
npm notice 6.8kB dist/keys.d.ts
npm notice 39.9kB dist/keys.d.ts.map
npm notice 34.3kB dist/keys.js
npm notice 65.3kB dist/keys.js.map
npm notice 1.6kB dist/stdin-buffer.d.ts
npm notice 11.6kB dist/stdin-buffer.d.ts.map
npm notice 10.7kB dist/stdin-buffer.js
npm notice 19.5kB dist/stdin-buffer.js.map
npm notice 2.8kB dist/terminal-image.d.ts
npm notice 13.4kB dist/terminal-image.d.ts.map
npm notice 10.2kB dist/terminal-image.js
npm notice 21.9kB dist/terminal-image.js.map
npm notice 2.2kB dist/terminal.d.ts
npm notice 9.2kB dist/terminal.d.ts.map
npm notice 6.7kB dist/terminal.js
npm notice 12.4kB dist/terminal.js.map
npm notice 7.4kB dist/tui.d.ts
npm notice 45.4kB dist/tui.d.ts.map
npm notice 40.1kB dist/tui.js
npm notice 72.7kB dist/tui.js.map
npm notice 3.3kB dist/utils.d.ts
npm notice 28.8kB dist/utils.d.ts.map
npm notice 28.9kB dist/utils.js
npm notice 50.7kB dist/utils.js.map
npm notice 1.1kB package.json
npm notice Tarball Details
npm notice name: @mariozechner/pi-tui
npm notice version: 0.50.7
npm notice filename: mariozechner-pi-tui-0.50.7.tgz
npm notice package size: 260.5 kB
npm notice unpacked size: 1.3 MB
npm notice shasum: c07d5a6d10f1da6b6031666e83d9e1cc78b34a53
npm notice integrity: sha512-O8H8hXqoWdE+5[...]wnf4VThYQBFIA==
npm notice total files: 94
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @mariozechner/pi-tui@0.50.7
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.
npm notice
npm notice 📦 @mariozechner/pi-web-ui@0.50.7
npm notice Tarball Contents
npm notice 5.2kB CHANGELOG.md
npm notice 16.3kB README.md
npm notice 86.2kB dist/app.css
npm notice 1.3kB dist/ChatPanel.d.ts
npm notice 1.1kB dist/ChatPanel.d.ts.map
npm notice 8.4kB dist/ChatPanel.js
npm notice 5.8kB dist/ChatPanel.js.map
npm notice 1.5kB dist/components/AgentInterface.d.ts
npm notice 1.4kB dist/components/AgentInterface.d.ts.map
npm notice 15.3kB dist/components/AgentInterface.js
npm notice 10.8kB dist/components/AgentInterface.js.map
npm notice 455B dist/components/AttachmentTile.d.ts
npm notice 451B dist/components/AttachmentTile.d.ts.map
npm notice 4.5kB dist/components/AttachmentTile.js
npm notice 2.6kB dist/components/AttachmentTile.js.map
npm notice 396B dist/components/ConsoleBlock.d.ts
npm notice 408B dist/components/ConsoleBlock.d.ts.map
npm notice 3.1kB dist/components/ConsoleBlock.js
npm notice 2.0kB dist/components/ConsoleBlock.js.map
npm notice 666B dist/components/CustomProviderCard.d.ts
npm notice 669B dist/components/CustomProviderCard.d.ts.map
npm notice 4.0kB dist/components/CustomProviderCard.js
npm notice 2.6kB dist/components/CustomProviderCard.js.map
npm notice 520B dist/components/ExpandableSection.d.ts
npm notice 410B dist/components/ExpandableSection.d.ts.map
npm notice 2.4kB dist/components/ExpandableSection.js
npm notice 1.3kB dist/components/ExpandableSection.js.map
npm notice 929B dist/components/Input.d.ts
npm notice 1.1kB dist/components/Input.d.ts.map
npm notice 2.5kB dist/components/Input.js
npm notice 1.8kB dist/components/Input.js.map
npm notice 690B dist/components/message-renderer-registry.d.ts
npm notice 693B dist/components/message-renderer-registry.d.ts.map
npm notice 430B dist/components/message-renderer-registry.js
npm notice 554B dist/components/message-renderer-registry.js.map
npm notice 1.5kB dist/components/MessageEditor.d.ts
npm notice 1.5kB dist/components/MessageEditor.d.ts.map
npm notice 14.8kB dist/components/MessageEditor.js
npm notice 11.3kB dist/components/MessageEditor.js.map
npm notice 534B dist/components/MessageList.d.ts
npm notice 559B dist/components/MessageList.d.ts.map
npm notice 3.8kB dist/components/MessageList.js
npm notice 2.6kB dist/components/MessageList.js.map
npm notice 3.6kB dist/components/Messages.d.ts
npm notice 2.6kB dist/components/Messages.d.ts.map
npm notice 12.8kB dist/components/Messages.js
npm notice 9.4kB dist/components/Messages.js.map
npm notice 477B dist/components/ProviderKeyInput.d.ts
npm notice 458B dist/components/ProviderKeyInput.d.ts.map
npm notice 6.2kB dist/components/ProviderKeyInput.js
npm notice 4.7kB dist/components/ProviderKeyInput.js.map
npm notice 1.2kB dist/components/sandbox/ArtifactsRuntimeProvider.d.ts
npm notice 998B dist/components/sandbox/ArtifactsRuntimeProvider.d.ts.map
npm notice 7.9kB dist/components/sandbox/ArtifactsRuntimeProvider.js
npm notice 5.8kB dist/components/sandbox/ArtifactsRuntimeProvider.js.map
npm notice 691B dist/components/sandbox/AttachmentsRuntimeProvider.d.ts
npm notice 506B dist/components/sandbox/AttachmentsRuntimeProvider.d.ts.map
npm notice 2.5kB dist/components/sandbox/AttachmentsRuntimeProvider.js
npm notice 2.1kB dist/components/sandbox/AttachmentsRuntimeProvider.js.map
npm notice 1.2kB dist/components/sandbox/ConsoleRuntimeProvider.d.ts
npm notice 936B dist/components/sandbox/ConsoleRuntimeProvider.d.ts.map
npm notice 5.9kB dist/components/sandbox/ConsoleRuntimeProvider.js
npm notice 4.3kB dist/components/sandbox/ConsoleRuntimeProvider.js.map
npm notice 1.0kB dist/components/sandbox/FileDownloadRuntimeProvider.d.ts
npm notice 732B dist/components/sandbox/FileDownloadRuntimeProvider.d.ts.map
npm notice 3.8kB dist/components/sandbox/FileDownloadRuntimeProvider.js
npm notice 2.5kB dist/components/sandbox/FileDownloadRuntimeProvider.js.map
npm notice 789B dist/components/sandbox/RuntimeMessageBridge.d.ts
npm notice 475B dist/components/sandbox/RuntimeMessageBridge.d.ts.map
npm notice 2.5kB dist/components/sandbox/RuntimeMessageBridge.js
npm notice 780B dist/components/sandbox/RuntimeMessageBridge.js.map
npm notice 2.5kB dist/components/sandbox/RuntimeMessageRouter.d.ts
npm notice 934B dist/components/sandbox/RuntimeMessageRouter.d.ts.map
npm notice 6.7kB dist/components/sandbox/RuntimeMessageRouter.js
npm notice 3.9kB dist/components/sandbox/RuntimeMessageRouter.js.map
npm notice 2.2kB dist/components/sandbox/SandboxRuntimeProvider.d.ts
npm notice 653B dist/components/sandbox/SandboxRuntimeProvider.d.ts.map
npm notice 61B dist/components/sandbox/SandboxRuntimeProvider.js
npm notice 161B dist/components/sandbox/SandboxRuntimeProvider.js.map
npm notice 3.4kB dist/components/SandboxedIframe.d.ts
npm notice 1.6kB dist/components/SandboxedIframe.d.ts.map
npm notice 22.1kB dist/components/SandboxedIframe.js
npm notice 12.9kB dist/components/SandboxedIframe.js.map
npm notice 812B dist/components/StreamingMessageContainer.d.ts
npm notice 792B dist/components/StreamingMessageContainer.d.ts.map
npm notice 4.9kB dist/components/StreamingMessageContainer.js
npm notice 2.8kB dist/components/StreamingMessageContainer.js.map
npm notice 383B dist/components/ThinkingBlock.d.ts
npm notice 384B dist/components/ThinkingBlock.d.ts.map
npm notice 2.4kB dist/components/ThinkingBlock.js
npm notice 1.2kB dist/components/ThinkingBlock.js.map
npm notice 590B dist/dialogs/ApiKeyPromptDialog.d.ts
npm notice 524B dist/dialogs/ApiKeyPromptDialog.d.ts.map
npm notice 2.9kB dist/dialogs/ApiKeyPromptDialog.js
npm notice 2.1kB dist/dialogs/ApiKeyPromptDialog.js.map
npm notice 1.1kB dist/dialogs/AttachmentOverlay.d.ts
npm notice 992B dist/dialogs/AttachmentOverlay.d.ts.map
npm notice 22.7kB dist/dialogs/AttachmentOverlay.js
npm notice 15.5kB dist/dialogs/AttachmentOverlay.js.map
npm notice 963B dist/dialogs/CustomProviderDialog.d.ts
npm notice 905B dist/dialogs/CustomProviderDialog.d.ts.map
npm notice 9.9kB dist/dialogs/CustomProviderDialog.js
npm notice 7.8kB dist/dialogs/CustomProviderDialog.js.map
npm notice 1.1kB dist/dialogs/ModelSelector.d.ts
npm notice 974B dist/dialogs/ModelSelector.d.ts.map
npm notice 13.4kB dist/dialogs/ModelSelector.js
npm notice 10.3kB dist/dialogs/ModelSelector.js.map
npm notice 630B dist/dialogs/PersistentStorageDialog.d.ts
npm notice 477B dist/dialogs/PersistentStorageDialog.d.ts.map
npm notice 5.8kB dist/dialogs/PersistentStorageDialog.js
npm notice 3.1kB dist/dialogs/PersistentStorageDialog.js.map
npm notice 698B dist/dialogs/ProvidersModelsTab.d.ts
npm notice 553B dist/dialogs/ProvidersModelsTab.d.ts.map
npm notice 7.7kB dist/dialogs/ProvidersModelsTab.js
npm notice 5.5kB dist/dialogs/ProvidersModelsTab.js.map
npm notice 717B dist/dialogs/SessionListDialog.d.ts
npm notice 666B dist/dialogs/SessionListDialog.d.ts.map
npm notice 5.9kB dist/dialogs/SessionListDialog.js
npm notice 4.0kB dist/dialogs/SessionListDialog.js.map
npm notice 965B dist/dialogs/SettingsDialog.d.ts
npm notice 834B dist/dialogs/SettingsDialog.d.ts.map
npm notice 7.6kB dist/dialogs/SettingsDialog.js
npm notice 5.0kB dist/dialogs/SettingsDialog.js.map
npm notice 5.6kB dist/index.d.ts
npm notice 3.6kB dist/index.d.ts.map
npm notice 4.8kB dist/index.js
npm notice 3.1kB dist/index.js.map
npm notice 4.6kB dist/prompts/prompts.d.ts
npm notice 341B dist/prompts/prompts.d.ts.map
npm notice 10.8kB dist/prompts/prompts.js
npm notice 954B dist/prompts/prompts.js.map
npm notice 1.3kB dist/storage/app-storage.d.ts
npm notice 973B dist/storage/app-storage.d.ts.map
npm notice 1.2kB dist/storage/app-storage.js
npm notice 966B dist/storage/app-storage.js.map
npm notice 1.3kB dist/storage/backends/indexeddb-storage-backend.d.ts
npm notice 1.4kB dist/storage/backends/indexeddb-storage-backend.d.ts.map
npm notice 6.8kB dist/storage/backends/indexeddb-storage-backend.js
npm notice 6.9kB dist/storage/backends/indexeddb-storage-backend.js.map
npm notice 771B dist/storage/store.d.ts
npm notice 385B dist/storage/store.d.ts.map
npm notice 666B dist/storage/store.js
npm notice 456B dist/storage/store.js.map
npm notice 968B dist/storage/stores/custom-providers-store.d.ts
npm notice 1.0kB dist/storage/stores/custom-providers-store.d.ts.map
npm notice 1.0kB dist/storage/stores/custom-providers-store.js
npm notice 1.2kB dist/storage/stores/custom-providers-store.js.map
npm notice 518B dist/storage/stores/provider-keys-store.d.ts
npm notice 630B dist/storage/stores/provider-keys-store.d.ts.map
npm notice 773B dist/storage/stores/provider-keys-store.js
npm notice 902B dist/storage/stores/provider-keys-store.js.map
npm notice 1.4kB dist/storage/stores/sessions-store.d.ts
npm notice 1.3kB dist/storage/stores/sessions-store.d.ts.map
npm notice 3.9kB dist/storage/stores/sessions-store.js
npm notice 3.8kB dist/storage/stores/sessions-store.js.map
npm notice 476B dist/storage/stores/settings-store.d.ts
npm notice 618B dist/storage/stores/settings-store.d.ts.map
npm notice 744B dist/storage/stores/settings-store.js
npm notice 879B dist/storage/stores/settings-store.js.map
npm notice 5.6kB dist/storage/types.d.ts
npm notice 3.3kB dist/storage/types.d.ts.map
npm notice 44B dist/storage/types.js
npm notice 113B dist/storage/types.js.map
npm notice 397B dist/tools/artifacts/ArtifactElement.d.ts
npm notice 419B dist/tools/artifacts/ArtifactElement.d.ts.map
npm notice 231B dist/tools/artifacts/ArtifactElement.js
npm notice 310B dist/tools/artifacts/ArtifactElement.js.map
npm notice 244B dist/tools/artifacts/ArtifactPill.d.ts
npm notice 312B dist/tools/artifacts/ArtifactPill.d.ts.map
npm notice 847B dist/tools/artifacts/ArtifactPill.js
npm notice 715B dist/tools/artifacts/ArtifactPill.js.map
npm notice 697B dist/tools/artifacts/artifacts-tool-renderer.d.ts
npm notice 617B dist/tools/artifacts/artifacts-tool-renderer.d.ts.map
npm notice 11.6kB dist/tools/artifacts/artifacts-tool-renderer.js
npm notice 8.7kB dist/tools/artifacts/artifacts-tool-renderer.js.map
npm notice 2.2kB dist/tools/artifacts/artifacts.d.ts
npm notice 1.6kB dist/tools/artifacts/artifacts.d.ts.map
npm notice 27.8kB dist/tools/artifacts/artifacts.js
npm notice 21.1kB dist/tools/artifacts/artifacts.js.map
npm notice 489B dist/tools/artifacts/Console.d.ts
npm notice 523B dist/tools/artifacts/Console.d.ts.map
npm notice 3.7kB dist/tools/artifacts/Console.js
npm notice 2.7kB dist/tools/artifacts/Console.js.map
npm notice 723B dist/tools/artifacts/DocxArtifact.d.ts
npm notice 709B dist/tools/artifacts/DocxArtifact.d.ts.map
npm notice 6.9kB dist/tools/artifacts/DocxArtifact.js
npm notice 4.1kB dist/tools/artifacts/DocxArtifact.js.map
npm notice 783B dist/tools/artifacts/ExcelArtifact.d.ts
npm notice 758B dist/tools/artifacts/ExcelArtifact.d.ts.map
npm notice 9.1kB dist/tools/artifacts/ExcelArtifact.js
npm notice 6.7kB dist/tools/artifacts/ExcelArtifact.js.map
npm notice 619B dist/tools/artifacts/GenericArtifact.d.ts
npm notice 614B dist/tools/artifacts/GenericArtifact.d.ts.map
npm notice 4.1kB dist/tools/artifacts/GenericArtifact.js
npm notice 2.5kB dist/tools/artifacts/GenericArtifact.js.map
npm notice 1.1kB dist/tools/artifacts/HtmlArtifact.d.ts
npm notice 951B dist/tools/artifacts/HtmlArtifact.d.ts.map
npm notice 7.9kB dist/tools/artifacts/HtmlArtifact.js
npm notice 5.5kB dist/tools/artifacts/HtmlArtifact.js.map
npm notice 636B dist/tools/artifacts/ImageArtifact.d.ts
npm notice 629B dist/tools/artifacts/ImageArtifact.d.ts.map
npm notice 4.2kB dist/tools/artifacts/ImageArtifact.js
npm notice 2.8kB dist/tools/artifacts/ImageArtifact.js.map
npm notice 453B dist/tools/artifacts/index.d.ts
npm notice 459B dist/tools/artifacts/index.d.ts.map
npm notice 414B dist/tools/artifacts/index.js
npm notice 429B dist/tools/artifacts/index.js.map
npm notice 663B dist/tools/artifacts/MarkdownArtifact.d.ts
npm notice 578B dist/tools/artifacts/MarkdownArtifact.d.ts.map
npm notice 3.1kB dist/tools/artifacts/MarkdownArtifact.js
npm notice 2.1kB dist/tools/artifacts/MarkdownArtifact.js.map
npm notice 805B dist/tools/artifacts/PdfArtifact.d.ts
npm notice 783B dist/tools/artifacts/PdfArtifact.d.ts.map
npm notice 6.8kB dist/tools/artifacts/PdfArtifact.js
npm notice 5.4kB dist/tools/artifacts/PdfArtifact.js.map
npm notice 588B dist/tools/artifacts/SvgArtifact.d.ts
npm notice 540B dist/tools/artifacts/SvgArtifact.d.ts.map
npm notice 3.0kB dist/tools/artifacts/SvgArtifact.js
npm notice 2.1kB dist/tools/artifacts/SvgArtifact.js.map
npm notice 628B dist/tools/artifacts/TextArtifact.d.ts
npm notice 559B dist/tools/artifacts/TextArtifact.d.ts.map
npm notice 4.0kB dist/tools/artifacts/TextArtifact.js
npm notice 3.0kB dist/tools/artifacts/TextArtifact.js.map
npm notice 1.0kB dist/tools/extract-document.d.ts
npm notice 717B dist/tools/extract-document.d.ts.map
npm notice 10.3kB dist/tools/extract-document.js
npm notice 6.5kB dist/tools/extract-document.js.map
npm notice 772B dist/tools/index.d.ts
npm notice 576B dist/tools/index.d.ts.map
npm notice 1.4kB dist/tools/index.js
npm notice 1.0kB dist/tools/index.js.map
npm notice 1.9kB dist/tools/javascript-repl.d.ts
npm notice 1.3kB dist/tools/javascript-repl.d.ts.map
npm notice 10.3kB dist/tools/javascript-repl.js
npm notice 8.7kB dist/tools/javascript-repl.js.map
npm notice 1.2kB dist/tools/renderer-registry.d.ts
npm notice 837B dist/tools/renderer-registry.d.ts.map
npm notice 4.3kB dist/tools/renderer-registry.js
npm notice 3.1kB dist/tools/renderer-registry.js.map
npm notice 425B dist/tools/renderers/BashRenderer.d.ts
npm notice 457B dist/tools/renderers/BashRenderer.d.ts.map
npm notice 1.6kB dist/tools/renderers/BashRenderer.js
npm notice 1.5kB dist/tools/renderers/BashRenderer.js.map
npm notice 453B dist/tools/renderers/CalculateRenderer.d.ts
npm notice 469B dist/tools/renderers/CalculateRenderer.d.ts.map
npm notice 1.9kB dist/tools/renderers/CalculateRenderer.js
npm notice 1.7kB dist/tools/renderers/CalculateRenderer.js.map
npm notice 356B dist/tools/renderers/DefaultRenderer.d.ts
npm notice 402B dist/tools/renderers/DefaultRenderer.d.ts.map
npm notice 3.1kB dist/tools/renderers/DefaultRenderer.js
npm notice 2.3kB dist/tools/renderers/DefaultRenderer.js.map
npm notice 477B dist/tools/renderers/GetCurrentTimeRenderer.d.ts
npm notice 492B dist/tools/renderers/GetCurrentTimeRenderer.d.ts.map
npm notice 2.9kB dist/tools/renderers/GetCurrentTimeRenderer.js
npm notice 2.4kB dist/tools/renderers/GetCurrentTimeRenderer.js.map
npm notice 426B dist/tools/types.d.ts
npm notice 487B dist/tools/types.d.ts.map
npm notice 44B dist/tools/types.js
npm notice 111B dist/tools/types.js.map
npm notice 606B dist/utils/attachment-utils.d.ts
npm notice 527B dist/utils/attachment-utils.d.ts.map
npm notice 16.3kB dist/utils/attachment-utils.js
npm notice 13.9kB dist/utils/attachment-utils.js.map
npm notice 166B dist/utils/auth-token.d.ts
npm notice 204B dist/utils/auth-token.d.ts.map
npm notice 688B dist/utils/auth-token.js
npm notice 753B dist/utils/auth-token.js.map
npm notice 328B dist/utils/format.d.ts
npm notice 366B dist/utils/format.d.ts.map
npm notice 1.5kB dist/utils/format.js
npm notice 2.0kB dist/utils/format.js.map
npm notice 24.4kB dist/utils/i18n.d.ts
npm notice 6.1kB dist/utils/i18n.d.ts.map
npm notice 23.4kB dist/utils/i18n.js
npm notice 9.8kB dist/utils/i18n.js.map
npm notice 1.9kB dist/utils/model-discovery.d.ts
npm notice 880B dist/utils/model-discovery.d.ts.map
npm notice 9.6kB dist/utils/model-discovery.js
npm notice 7.1kB dist/utils/model-discovery.js.map
npm notice 1.9kB dist/utils/proxy-utils.d.ts
npm notice 638B dist/utils/proxy-utils.d.ts.map
npm notice 3.8kB dist/utils/proxy-utils.js
npm notice 2.2kB dist/utils/proxy-utils.js.map
npm notice 9.3kB dist/utils/test-sessions.d.ts
npm notice 547B dist/utils/test-sessions.d.ts.map
npm notice 154.8kB dist/utils/test-sessions.js
npm notice 38.5kB dist/utils/test-sessions.js.map
npm notice 422B example/index.html
npm notice 561B example/package.json
npm notice 1.7kB example/README.md
npm notice 30B example/src/app.css
npm notice 3.4kB example/src/custom-messages.ts
npm notice 12.1kB example/src/main.ts
npm notice 647B example/tsconfig.json
npm notice 144B example/vite.config.ts
npm notice 1.7kB package.json
npm notice 2.2kB scripts/count-prompt-tokens.ts
npm notice 1.6kB src/app.css
npm notice 7.3kB src/ChatPanel.ts
npm notice 13.0kB src/components/AgentInterface.ts
npm notice 3.6kB src/components/AttachmentTile.ts
npm notice 2.2kB src/components/ConsoleBlock.ts
npm notice 3.0kB src/components/CustomProviderCard.ts
npm notice 1.5kB src/components/ExpandableSection.ts
npm notice 3.2kB src/components/Input.ts
npm notice 980B src/components/message-renderer-registry.ts
npm notice 12.0kB src/components/MessageEditor.ts
npm notice 2.9kB src/components/MessageList.ts
npm notice 11.9kB src/components/Messages.ts
npm notice 4.5kB src/components/ProviderKeyInput.ts
npm notice 6.3kB src/components/sandbox/ArtifactsRuntimeProvider.ts
npm notice 2.2kB src/components/sandbox/AttachmentsRuntimeProvider.ts
npm notice 5.0kB src/components/sandbox/ConsoleRuntimeProvider.ts
npm notice 3.3kB src/components/sandbox/FileDownloadRuntimeProvider.ts
npm notice 2.7kB src/components/sandbox/RuntimeMessageBridge.ts
npm notice 6.6kB src/components/sandbox/RuntimeMessageRouter.ts
npm notice 2.0kB src/components/sandbox/SandboxRuntimeProvider.ts
npm notice 19.6kB src/components/SandboxedIframe.ts
npm notice 3.7kB src/components/StreamingMessageContainer.ts
npm notice 1.5kB src/components/ThinkingBlock.ts
npm notice 2.0kB src/dialogs/ApiKeyPromptDialog.ts
npm notice 18.9kB src/dialogs/AttachmentOverlay.ts
npm notice 8.5kB src/dialogs/CustomProviderDialog.ts
npm notice 11.0kB src/dialogs/ModelSelector.ts
npm notice 4.5kB src/dialogs/PersistentStorageDialog.ts
npm notice 6.8kB src/dialogs/ProvidersModelsTab.ts
npm notice 4.9kB src/dialogs/SessionListDialog.ts
npm notice 6.2kB src/dialogs/SettingsDialog.ts
npm notice 5.8kB src/index.ts
npm notice 10.8kB src/prompts/prompts.ts
npm notice 1.7kB src/storage/app-storage.ts
npm notice 6.1kB src/storage/backends/indexeddb-storage-backend.ts
npm notice 868B src/storage/store.ts
npm notice 1.9kB src/storage/stores/custom-providers-store.ts
npm notice 837B src/storage/stores/provider-keys-store.ts
npm notice 3.9kB src/storage/stores/sessions-store.ts
npm notice 789B src/storage/stores/settings-store.ts
npm notice 5.1kB src/storage/types.ts
npm notice 410B src/tools/artifacts/ArtifactElement.ts
npm notice 889B src/tools/artifacts/ArtifactPill.ts
npm notice 10.4kB src/tools/artifacts/artifacts-tool-renderer.ts
npm notice 23.9kB src/tools/artifacts/artifacts.ts
npm notice 3.0kB src/tools/artifacts/Console.ts
npm notice 5.7kB src/tools/artifacts/DocxArtifact.ts
npm notice 7.1kB src/tools/artifacts/ExcelArtifact.ts
npm notice 3.2kB src/tools/artifacts/GenericArtifact.ts
npm notice 6.9kB src/tools/artifacts/HtmlArtifact.ts
npm notice 3.2kB src/tools/artifacts/ImageArtifact.ts
npm notice 418B src/tools/artifacts/index.ts
npm notice 2.4kB src/tools/artifacts/MarkdownArtifact.ts
npm notice 5.4kB src/tools/artifacts/PdfArtifact.ts
npm notice 2.3kB src/tools/artifacts/SvgArtifact.ts
npm notice 3.1kB src/tools/artifacts/TextArtifact.ts
npm notice 9.4kB src/tools/extract-document.ts
npm notice 1.5kB src/tools/index.ts
npm notice 10.0kB src/tools/javascript-repl.ts
npm notice 4.3kB src/tools/renderer-registry.ts
npm notice 1.7kB src/tools/renderers/BashRenderer.ts
npm notice 1.9kB src/tools/renderers/CalculateRenderer.ts
npm notice 2.8kB src/tools/renderers/DefaultRenderer.ts
npm notice 2.7kB src/tools/renderers/GetCurrentTimeRenderer.ts
npm notice 442B src/tools/types.ts
npm notice 14.2kB src/utils/attachment-utils.ts
npm notice 647B src/utils/auth-token.ts
npm notice 1.4kB src/utils/format.ts
npm notice 27.8kB src/utils/i18n.ts
npm notice 8.3kB src/utils/model-discovery.ts
npm notice 3.7kB src/utils/proxy-utils.ts
npm notice 128.7kB src/utils/test-sessions.ts
npm notice 501B tsconfig.build.json
npm notice 118B tsconfig.json
npm notice Tarball Details
npm notice name: @mariozechner/pi-web-ui
npm notice version: 0.50.7
npm notice filename: mariozechner-pi-web-ui-0.50.7.tgz
npm notice package size: 352.2 kB
npm notice unpacked size: 1.7 MB
npm notice shasum: 2813af9c18228d702b708f8f3506af6caaacfbeb
npm notice integrity: sha512-yA+KlsLzGdapH[...]zyM1DCxIN4YFQ==
npm notice total files: 371
npm notice
npm notice Publishing to https://registry.npmjs.org/ with tag latest and public access
+ @mariozechner/pi-web-ui@0.50.7
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.
npm notice
npm notice 📦 pi-web-ui-example@1.38.7
npm notice Tarball Contents
npm notice 1.7kB README.md
npm notice 422B index.html
npm notice 561B package.json
npm notice 30B src/app.css
npm notice 3.4kB src/custom-messages.ts
npm notice 12.1kB src/main.ts
npm notice 647B tsconfig.json
npm notice 144B vite.config.ts
npm notice Tarball Details
npm notice name: pi-web-ui-example
npm notice version: 1.38.7
npm notice filename: pi-web-ui-example-1.38.7.tgz
npm notice package size: 6.4 kB
npm notice unpacked size: 19.0 kB
npm notice shasum: b1f1a4a38169a6f9bf798b9f8322a7d43af84fa9
npm notice integrity: sha512-WMHhut4oZKew4[...]kXZ2qIB2P1Cqw==
npm notice total files: 8
npm notice
npm warn publish Skipping workspace pi-web-ui-example, marked as private
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.
npm notice
npm notice 📦 pi-extension-with-deps@1.14.7
npm notice Tarball Contents
npm notice 1.1kB index.ts
npm notice 398B package.json
npm notice Tarball Details
npm notice name: pi-extension-with-deps
npm notice version: 1.14.7
npm notice filename: pi-extension-with-deps-1.14.7.tgz
npm notice package size: 860 B
npm notice unpacked size: 1.5 kB
npm notice shasum: f3bd336a6fadea13bf18f10e011fc0693576a4d0
npm notice integrity: sha512-NN9KiCsbmxmGl[...]0E9uoqM6cDuzw==
npm notice total files: 2
npm notice
npm warn publish Skipping workspace pi-extension-with-deps, marked as private
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.
npm notice
npm notice 📦 pi-extension-custom-provider-anthropic@1.1.7
npm notice Tarball Contents
npm notice 19.2kB index.ts
npm notice 375B package.json
npm notice Tarball Details
npm notice name: pi-extension-custom-provider-anthropic
npm notice version: 1.1.7
npm notice filename: pi-extension-custom-provider-anthropic-1.1.7.tgz
npm notice package size: 5.6 kB
npm notice unpacked size: 19.5 kB
npm notice shasum: 66b22830ced849743aa80a63b55048b2f100155c
npm notice integrity: sha512-6TO3PBwmRdSFa[...]+zcPC/Q6EmJIg==
npm notice total files: 2
npm notice
npm warn publish Skipping workspace pi-extension-custom-provider-anthropic, marked as private
npm warn gitignore-fallback No .npmignore file found, using .gitignore for file exclusion. Consider creating a .npmignore file to explicitly control published files.
npm notice
npm notice 📦 pi-extension-custom-provider-gitlab-duo@1.1.7
npm notice Tarball Contents
npm notice 10.7kB index.ts
npm notice 316B package.json
npm notice 2.6kB test.ts
npm notice Tarball Details
npm notice name: pi-extension-custom-provider-gitlab-duo
npm notice version: 1.1.7
npm notice filename: pi-extension-custom-provider-gitlab-duo-1.1.7.tgz
npm notice package size: 4.2 kB
npm notice unpacked size: 13.7 kB
npm notice shasum: 396e453c829977b6c80e9dcaf2c5f98791566fbe
npm notice integrity: sha512-TpbUbed+KGT1d[...]ghbtIoA7WvElg==
npm notice total files: 3
npm notice
npm warn publish Skipping workspace pi-extension-custom-provider-gitlab-duo, marked as private
Adding [Unreleased] sections for next cycle...
Added [Unreleased] to packages/agent/CHANGELOG.md
Added [Unreleased] to packages/ai/CHANGELOG.md
Added [Unreleased] to packages/coding-agent/CHANGELOG.md
Added [Unreleased] to packages/mom/CHANGELOG.md
Added [Unreleased] to packages/tui/CHANGELOG.md
Added [Unreleased] to packages/web-ui/CHANGELOG.md
Committing changelog updates...
$ git add .
$ git commit -m "Add [Unreleased] section for next cycle"
Running formatting, linting, and type checking...
> pi-monorepo@0.0.3 check
> biome check --write . && tsgo --noEmit && cd packages/web-ui && npm run check
packages/coding-agent/src/modes/interactive/components/daxnuts.ts:49:12 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
47 │ const top = pixels[row][x];
48 │ const bottom = pixels[row + 1]?.[x] ?? top;
> 49 │ line += rgb(bottom[0], bottom[1], bottom[2]) + rgb(top[0], top[1], top[2], true) + "▄";
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
50 │ }
51 │ line += RESET;
i Unsafe fix: Use a template literal.
47 47 │ const top = pixels[row][x];
48 48 │ const bottom = pixels[row + 1]?.[x] ?? top;
49 │ - → → → line·+=·rgb(bottom[0],·bottom[1],·bottom[2])·+·rgb(top[0],·top[1],·top[2],·true)·+·"▄";
49 │ + → → → line·+=·`${rgb(bottom[0],·bottom[1],·bottom[2])·+·rgb(top[0],·top[1],·top[2],·true)}▄`;
50 50 │ }
51 51 │ line += RESET;
packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts:79:5 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
77 │ "Middle \x1b_Ga=T,data...\x1b\\ more text",
78 │ // Very long line (simulating 300KB+ crash scenario)
> 79 │ "Text before " + "\x1b_Ga=T,f=100" + "A".repeat(300000) + " text after",
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
80 │ ];
81 │
i Unsafe fix: Use a template literal.
77 77 │ "Middle \x1b_Ga=T,data...\x1b\\ more text",
78 78 │ // Very long line (simulating 300KB+ crash scenario)
79 │ - → → → → "Text·before·"·+·"\x1b_Ga=T,f=100"·+·"A".repeat(300000)·+·"·text·after",
79 │ + → → → → `Text·before·\x1b_Ga=T,f=100${"A".repeat(300000)}·text·after`,
80 80 │ ];
81 81 │
packages/tui/test/bug-regression-isimageline-startswith-bug.test.ts:96:5 lint/style/useTemplate FIXABLE ━━━━━━━━━━
i Template literals are preferred over string concatenation.
94 │ "Middle \x1b]1337;File=inline=1:data==\x07 more text",
95 │ // Very long line (simulating 304KB crash scenario)
> 96 │ "Text before " + "\x1b]1337;File=size=800,600;inline=1:" + "B".repeat(300000) + " text after",
│ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
97 │ ];
98 │
i Unsafe fix: Use a template literal.
94 94 │ "Middle \x1b]1337;File=inline=1:data==\x07 more text",
95 95 │ // Very long line (simulating 304KB crash scenario)
96 │ - → → → → "Text·before·"·+·"\x1b]1337;File=size=800,600;inline=1:"·+·"B".repeat(300000)·+·"·text·after",
96 │ + → → → → `Text·before·\x1b]1337;File=size=800,600;inline=1:${"B".repeat(300000)}·text·after`,
97 97 │ ];
98 98 │
Skipped 3 suggested fixes.
If you wish to apply the suggested (unsafe) fixes, use the command biome check --write --unsafe
Checked 450 files in 391ms. No fixes applied.
Found 3 infos.
> @mariozechner/pi-web-ui@0.50.7 check
> biome check --write . && tsc --noEmit && cd example && biome check --write . && tsc --noEmit
Checked 73 files in 39ms. No fixes applied.
Checked 3 files in 8ms. No fixes applied.
✅ All pre-commit checks passed!
[main f0eda2df] Add [Unreleased] section for next cycle
6 files changed, 12 insertions(+)
Pushing to remote...
$ git push origin main
To https://github.com/badlogic/pi-mono.git
ed80ab21..f0eda2df main -> main
$ git push origin v0.50.7
To https://github.com/badlogic/pi-mono.git
* [new tag] v0.50.7 -> v0.50.7
=== Released v0.50.7 ===
[Showing lines 1057-2142 of 2142 (50.0KB limit). Full output: /var/folders/49/l4171l3n219_xwq30fmyzr8w0000gn/T/pi-bash-4790eb785c3b3465.log]Release complete. Let me also close the issue since we fixed it.
>gh issue close 1102 --repo badlogic/pi-mono! Issue badlogic/pi-mono#1102 (Packaged extensions discover files differently than local extensions) is already closedThe issue was already closed automatically by the commit message "fixes #1102".
Done. Released v0.50.7 with the fix:
ed80ab21 - fix(coding-agent): multi-file extensions in packages now discovered correctlyfixes #1102)@mariozechner/pi-coding-agent@0.50.7 and all other packagesresourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);const files = resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);const files = resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);const files = resourceType === "skills" ? collectSkillEntries(dir) : resourceType === "extensions" ? collectAutoExtensionEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);function collectResourceFiles(dir: string, resourceType: ResourceType): string[] { if (resourceType === "skills") { return collectSkillEntries(dir); } if (resourceType === "extensions") { return collectAutoExtensionEntries(dir); } return collectFiles(dir, FILE_PATTERNS[resourceType]);
}// Line ~1216 in collectPackageResourcesconst files = resourceType === "skills" ? collectSkillEntries(dir) : collectFiles(dir, FILE_PATTERNS[resourceType]);function collectResourceFiles(dir: string, resourceType: ResourceType): string[] { if (resourceType === "skills") { return collectSkillEntries(dir); } if (resourceType === "extensions") { return collectAutoExtensionEntries(dir); } return collectFiles(dir, FILE_PATTERNS[resourceType]);}{ "pi": { "extensions": ["./extensions/foo.ts", "./extensions/bar/index.ts"] }}{ "pi": { "extensions": [ "./extensions/foo.ts", "./extensions/bar/index.ts" ] }}function collectResourceFiles(dir: string, resourceType: ResourceType): string[] { if (resourceType === "skills") { return collectSkillEntries(dir); } if (resourceType === "extensions") { return collectAutoExtensionEntries(dir); // Uses smart discovery } return collectFiles(dir, FILE_PATTERNS[resourceType]);}